En VB6 la api ShellExecute se declara como:
Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal HWnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long
Si deseo abrir un archivo con el programa que lo abre por defecto, deberé escribir (Me es el formulario):
Dim ret As Long
ret = ShellExecute(Me.HWnd, "Open", "C:\text.txt", "", "", 1)
ret = ShellExecute(Me.HWnd, "Open", "C:\text.txt", "", "", 1)
Esto abrirá el archivo de texto con el block de notas.
Si deseo abrir un archivo con otro programa, escribiré:
Dim ret As Long
ret = ShellExecute(Me.HWnd, "Open", "Wordpad.exe", "C:\text.txt", "", 1)
ret = ShellExecute(Me.HWnd, "Open", "Wordpad.exe", "C:\text.txt", "", 1)
Lo cual abrirá el archivo de texto con el Wordpad de Windows.
La función Shell es propia de VB6. Si quiero ejecutar una aplicación deberé escribir:
Shell "C:\MiApp.exe", vbNormalFocus
Update Abril 2013:
Sí se pueden ejecutar archivos ejecutables con la api ShellExecute, sólo hay que pasarle los parámetros correctos:
Dim ret As Long
ret = ShellExecute(Me.hwnd, vbNullString, _
"D:\unaCarpeta\Otra Carpeta\mIEjecutable.exe", vbNullString, vbNullString, 1)
Si no se va a evaluar el valor devuelto por ShellExecute no es necesario declarar la variable ret. Por ejemplo esto ejecuta el block de notas:
ShellExecute Me.hwnd, vbNullString, "notepad.exe", vbNullString, vbNullString, 1
Y esto ejecuta la calculadora de windows:
ShellExecute Me.hwnd, vbNullString, "calc.exe", vbNullString, vbNullString, 1
No hay comentarios:
Publicar un comentario