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
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
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.
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!!!
Hola gracias ahora si funcionaba creo q habia unos errores con el codigo pero el nuevo que me diste si funciona gracias.
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.
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
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