Autor
|
Tema: Dificl de explicar, Estoy Muy Confundido (Leído 2,337 veces)
|
Neoow
Desconectado
Mensajes: 7
|
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
|
|
« Última modificación: 24 Noviembre 2006, 20:47 pm por Neoow »
|
En línea
|
|
|
|
CeLaYa
Desconectado
Mensajes: 543
|
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
|
|
|
En línea
|
"La soledad es el elemento de los grandes talentos". Cristina de Suecia (1626-1689) Reina de Suecia.
|
|
|
Neoow
Desconectado
Mensajes: 7
|
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.
|
|
|
En línea
|
|
|
|
CeLaYa
Desconectado
Mensajes: 543
|
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!!!
|
|
|
En línea
|
"La soledad es el elemento de los grandes talentos". Cristina de Suecia (1626-1689) Reina de Suecia.
|
|
|
Neoow
Desconectado
Mensajes: 7
|
Hola gracias ahora si funcionaba creo q habia unos errores con el codigo pero el nuevo que me diste si funciona gracias.
|
|
|
En línea
|
|
|
|
Neoow
Desconectado
Mensajes: 7
|
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.
|
|
|
En línea
|
|
|
|
CeLaYa
Desconectado
Mensajes: 543
|
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
|
|
|
En línea
|
"La soledad es el elemento de los grandes talentos". Cristina de Suecia (1626-1689) Reina de Suecia.
|
|
|
soplo
Ex-Staff
Desconectado
Mensajes: 3.592
Debian rool'z
|
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
|
|
|
En línea
|
Callar es asentir ¡No te dejes llevar!
|
|
|
|
|