Dificl de explicar, Estoy Muy Confundido

Iniciado por Neoow, 24 Noviembre 2006, 20:41 PM

0 Miembros y 1 Visitante están viendo este tema.

Neoow

Hola , Estoy haciendo una aplicacion que va a Abrir un programa desde mi aplicacion con un codigo especificado este es mi codigo por mientras

Private Sub Command1_Click()
Dim A
Dim MyPath

MyPath = "C:\Arhivos de Programa\Aplicacion\Aplicacion.exe

A = Shell(MyPath, vbNormalFocus)
Unload Me
End Sub

Todo funciona bien pero Lo malo es que algunas personas no guardan el programa que quiero abrir aki.
C:\Arhivos de Programa\Aplicacion\Aplicacion.exe

Por Eso quiero hacer  otro Form que tiene un boton Browse y un text box y tambien que tenga un Checkbox.

El Boton Browse: Va a Abrir un Open file para que el user seleccione el .exe

El Textbox : Hay quiero la direccion del programa que el user selecciono en el boton Browser.

Checkbox : Hay Quiero que si el user quiere  guardar la a direccion del programa que el user selecciono en el boton Browser que estaba en el textbox.

Boton1 : Es el boton que va a aceptar y va abrir el programa que va a abrir la aplicacion.

Boton 2 : Cancelar
Por mientras este es mi codigo.

     Option Explicit

       Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
         "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

       Private Type OPENFILENAME
         lStructSize As Long
         hwndOwner As Long
         hInstance As Long
         lpstrFilter As String
         lpstrCustomFilter As String
         nMaxCustFilter As Long
         nFilterIndex As Long
         lpstrFile As String
         nMaxFile As Long
         lpstrFileTitle As String
         nMaxFileTitle As Long
         lpstrInitialDir As String
         lpstrTitle As String
         flags As Long
         nFileOffset As Integer
         nFileExtension As Integer
         lpstrDefExt As String
         lCustData As Long
         lpfnHook As Long
         lpTemplateName As String
       End Type


       Private Sub Command1_Click()
         Dim OpenFile As OPENFILENAME
         Dim lReturn As Long
         Dim sFilter As String
         OpenFile.lStructSize = Len(OpenFile)
         OpenFile.hwndOwner = Form1.hWnd
         OpenFile.hInstance = App.hInstance
         sFilter = "NyxLauncher (*.Exe)" & Chr(0) & "*.Exe" & Chr(0)
         OpenFile.lpstrFilter = sFilter
         OpenFile.nFilterIndex = 1
         OpenFile.lpstrFile = String(257, 0)
         OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
         OpenFile.lpstrFileTitle = OpenFile.lpstrFile
         OpenFile.nMaxFileTitle = OpenFile.nMaxFile
         OpenFile.lpstrInitialDir = "C:\"
         OpenFile.lpstrTitle = "Open Nyxlauncher Location"
         OpenFile.flags = 0
         lReturn = GetOpenFileName(OpenFile)
         If lReturn = 0 Then
            MsgBox "The User pressed the Cancel Button"
         Else
          Text1.Text = Trim(OpenFile.lpstrFile)
         End If
       End Sub


Como ven todo esta bien pero yo no se como se hace para que la otra ves que el user entre a mi programa ya no tenga que estar poniendo Browse y seleccionar otra ves el .exe , sino cuando la otra ves que el user entre la direccion del .exe ya este grabado en el text.text




CeLaYa

pues puedes poner un procedimiento para que te guarde el path del .exe al cerrar el form y al cargarlro lo abres para que ya te lo de por default.



private sub GuardarPath(cadena as string)
    Dim f As Long, r As String * 250
    r = cadena
    f = FreeFile
   
    Open App.Path + "\path.txt" For Random As #f Len = Len(r)
    Put #f, 0, r
    Close #f


end sub

Public Function AbrirPath() As String
    Dim f As Long, aux As String * 250
   
    f = FreeFile
    Open App.Path + "\path.txt" For Random As #f Len = 250
    Get #f, 0, aux
    AbrirArchivo = aux
    Close #f
   
End Function
   
y en el form

private sub form_load()
    text1.text = abrirpath
end sub

private sub form_Unload
    if checkBox.Value <> 0 then  Guardar_Path (text1.text)
end sub
"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.

Neoow

Hola ,gracias por responder el codigo se ve bien pero me dasmuchos errores  al compilar si arreglo algo me da otro error y en verda no se como hacearlo funcionar.

Me podrias mandar un projecto tuyo que contiene ese codigo para ver que hice mal?

tienes razon yo no se como haga para que guarde el path del .exe al cerrar el form y al cargarlro lo abres para que ya te lo de por default.


CeLaYa

la verdad esque agarre pedazos de codigo de un programa que estoy haciendo, ya lo depure y quedo asi:


Option Explicit

Private Sub GuardarPath(cadena As String)
    Dim f As Long, r As String * 250
    r = cadena
    f = FreeFile
   
    Open App.Path + "\path.txt" For Random As #f Len = Len(r)
    Put #f, 1, r
    Close #f
End Sub

Public Function AbrirPath() As String
    Dim f As Long, aux As String * 250
   
    f = FreeFile
    Open App.Path + "\path.txt" For Random As #f Len = 250
    Get #f, 1, aux
    AbrirPath = aux
    Close #f
   
End Function

Private Sub Form_Load()
    Text1.Text = AbrirPath
End Sub

Private Sub Form_Unload(Cancel As Integer)
    If Check1.Value <> 0 Then GuardarPath (Text1.Text)
End Sub


esto solo copialo a tu aplicación, ya no te debe de dar errorres.

lo que hace esque cuando abres el form busca un archivo "path.txt" guardado en el directorio de la aplicación, si no lo encuantra lo crea, y pone su contenido en el text1, al darle cerrar guarda el contenido del text1 en el archivo path.txt, supongo que el path de "C:\Arhivos de Programa\Aplicacion\Aplicacion.exe " esta en text1, sino solo cambia los nombres de los controles



espero te sirva...... saludos!!!
"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.

Neoow

Hola gracias ahora si funcionaba creo q habia unos errores con el codigo pero el nuevo que me diste si funciona gracias.

Neoow

Hola de nuevo esta todo perfecto lo malo es que yo queria usar el codigo que me acabas con 2 botones browse , 2 textbox y 1 checkbox
osea este es el codigo:
   Option Explicit

       Private Declare Function GetOpenFileName Lib "comdlg32.dll" Alias _
         "GetOpenFileNameA" (pOpenfilename As OPENFILENAME) As Long

       Private Type OPENFILENAME
         lStructSize As Long
         hwndOwner As Long
         hInstance As Long
         lpstrFilter As String
         lpstrCustomFilter As String
         nMaxCustFilter As Long
         nFilterIndex As Long
         lpstrFile As String
         nMaxFile As Long
         lpstrFileTitle As String
         nMaxFileTitle As Long
         lpstrInitialDir As String
         lpstrTitle As String
         flags As Long
         nFileOffset As Integer
         nFileExtension As Integer
         lpstrDefExt As String
         lCustData As Long
         lpfnHook As Long
         lpTemplateName As String
       End Type


       Private Sub Command1_Click()
         Dim OpenFile As OPENFILENAME
         Dim lReturn As Long
         Dim sFilter As String
         OpenFile.lStructSize = Len(OpenFile)
         OpenFile.hwndOwner = Form1.hWnd
         OpenFile.hInstance = App.hInstance
         sFilter = "NyxLauncher (*.Exe)" & Chr(0) & "*.Exe" & Chr(0)
         OpenFile.lpstrFilter = sFilter
         OpenFile.nFilterIndex = 1
         OpenFile.lpstrFile = String(257, 0)
         OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
         OpenFile.lpstrFileTitle = OpenFile.lpstrFile
         OpenFile.nMaxFileTitle = OpenFile.nMaxFile
         OpenFile.lpstrInitialDir = "C:\"
         OpenFile.lpstrTitle = "Open Nyxlauncher Location"
         OpenFile.flags = 0
         lReturn = GetOpenFileName(OpenFile)
         If lReturn = 0 Then
            MsgBox "The User pressed the Cancel Button"
         Else
          Text1.Text = Trim(OpenFile.lpstrFile)
         End If
       End Sub



Private Sub GuardarPath(cadena As String)
    Dim f As Long, r As String * 250
    r = cadena
    f = FreeFile
   
    Open App.Path + "\path.txt" For Random As #f Len = Len(r)
    Put #f, 1, r
    Close #f
End Sub


Public Function AbrirPath() As String
    Dim f As Long, aux As String * 250
   
    f = FreeFile
    Open App.Path + "\path.txt" For Random As #f Len = 250
    Get #f, 1, aux
    AbrirPath = aux
    Close #f


End Function


Private Sub Command2_Click()
Unload Me
End Sub

Private Sub Command4_Click()
Dim OpenFile As OPENFILENAME
         Dim lReturn As Long
         Dim sFilter As String
         OpenFile.lStructSize = Len(OpenFile)
         OpenFile.hwndOwner = Form1.hWnd
         OpenFile.hInstance = App.hInstance
         sFilter = "NyxLauncher (*.Exe)" & Chr(0) & "*.Exe" & Chr(0)
         OpenFile.lpstrFilter = sFilter
         OpenFile.nFilterIndex = 1
         OpenFile.lpstrFile = String(257, 0)
         OpenFile.nMaxFile = Len(OpenFile.lpstrFile) - 1
         OpenFile.lpstrFileTitle = OpenFile.lpstrFile
         OpenFile.nMaxFileTitle = OpenFile.nMaxFile
         OpenFile.lpstrInitialDir = "C:\"
         OpenFile.lpstrTitle = "Open Nyxlauncher Location"
         OpenFile.flags = 0
         lReturn = GetOpenFileName(OpenFile)
         If lReturn = 0 Then
            MsgBox "The User pressed the Cancel Button"
         Else
          Text2.Text = Trim(OpenFile.lpstrFile)
         End If
       End Sub


Private Sub Form_Load()
    Text1.Text = AbrirPath
End Sub

Private Sub Form_Unload(Cancel As Integer)
    If Check1.Value <> 0 Then
       GuardarPath (Text1.Text)
End Sub

He intentado poner:


Private Sub Form_Load()
    Text1.Text = AbrirPath
End Sub
Private Sub Form_Unload(Cancel As Integer)
    If Check1.Value <> 0 Then
       GuardarPath (Text1.Text)
Elseif Check1.value ><0 then
       GuardarPath (Text2.Text)
End Sub

pero no me funciona solo pone el mismo path del primer browser en los dos textbox.

CeLaYa

según el primer post, lo unico que faltaria seria que en un Command pongas

i = shell(text1.text, vbNormalFocus)

para que te ejecute la aplicación, de eso de que quieres meterle más controles pues es solo cuestión de usar la imaginación para ver que es lo que quieres que haga y donde poner el código
"La soledad es el elemento de los grandes talentos".
Cristina de Suecia (1626-1689) Reina de Suecia.

soplo

Neoow lee las reglas

El código debe ir destacado con code y /code (mira el botón junto al de hacer citas para que quede claro.

Otro como este y te lo borro sin mas.

Un saludo
Callar es asentir ¡No te dejes llevar!