ejecutar un exe desde VB

02/08/2003 - 14:27 por Caio | Informe spam
Gente, tengo el sgte problema:
Desde VB6.0 estoy usando "Shell c:\aaa.exe, vbNormalFocus" para ejecutar
dicho archivo.
Me encontre con el problema de que algunos archivos no se me ejecutan y me
dan distintos errores antes de iniciar la aplicacion que corresponda.
Existe alguna otra forma de ejecutar un programa dwesdde VB?

Un dato: Si con un control CommonDialog hago un "Dialog.ShowOpen" -->
elijo el archivo ejecutable --> Acepto. SE EJECUTA LO MAS BIEN (con shell
no)
Alguien tiene idea de que puede estar pasando.
Espero alguien pueda ayudarme.
Saludos
Kaio

Preguntas similare

Leer las respuestas

#1 Caio
02/08/2003 - 16:18 | Informe spam
Enrique:
Te comento que la sintaxis la uso como bien vos me decis (en el post
anterior me equivoque al escribirla).
Con respecto a los errores que me tiran son todos distintos, pero no son
errores de mi aplicacion sino errores que origina el exe que este ejecutando
(es por eso que no los puse).
Alguna idea?
Gracias
Caio

"Softjaen" escribió en el mensaje
news:

"Caio" escribió:

> Gente, tengo el sgte problema:
> Desde VB6.0 estoy usando "Shell c:\aaa.exe, vbNormalFocus"
> para ejecutar dicho archivo.
>

Hola, Caio:

No nos indicas las errores que te aparecen. De todas formas, ignoro si te
has equivocado en tu mensaje al escribir la sintaxis de la función


«Shell»,
o es así como la quieres utilizar en tu aplicación. La sintaxis correcta


es:

Shell "c:\aaa.exe", vbNormalFocus

Un saludo

Enrique Martínez
[MS MVP - VB]


Respuesta Responder a este mensaje
#2 Softjaen
02/08/2003 - 17:44 | Informe spam
"Caio" escribió:

Con respecto a los errores que me tiran son todos distintos,
pero no son errores de mi aplicacion sino errores que origina
el exe que este ejecutando



Luego entiendo que la función «Shell» de Visual Basic realiza bien su
trabajo. Ignoro a qué se puede deber que te aparezcan errores al abrir el
ejecutable. ¿Qué tipos de ejecutables son y sobre qué plataforma estas
trabajando?

Prueba a ejecutar la función API «ShellExecute» en lugar de la función
«Shell», para ver si los archivos ejecutables se abren sin errores:

Private Declare Function ShellExecute Lib "Shell32.Dll" _
Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal pOperation As String, _
ByVal pFile As String, ByVal pParameters As String, _
ByVal pdirectory As String, ByVal nShowCmd As Long) As Long

Private Sub Command1_Click()
' Abre el Bloc de Notas
ShellExecute Form1.hwnd, "open", "C:\Windows\Notepad.exe", _
vbNullString, vbNullString, 1
End Sub

Si por casualidad quieres abrir un documento de Microsoft Word, utiliza la
siguiente sintaxis:

Private Sub Command2_Click()
' Abre el documento seleccionado en el control
ShellExecute Form1.hwnd, "open", "C:\Mis documentos\Documento1.doc", _
vbNullString, vbNullString, 1
End Sub

Enrique Martínez
[MS MVP - VB]
Respuesta Responder a este mensaje
#3 Javier Balkenende
03/08/2003 - 21:18 | Informe spam
Disculpen la intromisión. Lo que se me ocurre que puede estar ocurriendo es
que el exe necesita que el directorio de trabajo sea el mismo donde está.
Para eso creo que se puede usar el parámetro pdirectory de la función
ShellExecute.

Saludos,
Javier


"Softjaen" escribió en el mensaje
news:%

"Caio" escribió:

> Con respecto a los errores que me tiran son todos distintos,
> pero no son errores de mi aplicacion sino errores que origina
> el exe que este ejecutando

Luego entiendo que la función «Shell» de Visual Basic realiza bien su
trabajo. Ignoro a qué se puede deber que te aparezcan errores al abrir el
ejecutable. ¿Qué tipos de ejecutables son y sobre qué plataforma estas
trabajando?

Prueba a ejecutar la función API «ShellExecute» en lugar de la función
«Shell», para ver si los archivos ejecutables se abren sin errores:

Private Declare Function ShellExecute Lib "Shell32.Dll" _
Alias "ShellExecuteA" _
(ByVal hwnd As Long, ByVal pOperation As String, _
ByVal pFile As String, ByVal pParameters As String, _
ByVal pdirectory As String, ByVal nShowCmd As Long) As Long

Private Sub Command1_Click()
' Abre el Bloc de Notas
ShellExecute Form1.hwnd, "open", "C:\Windows\Notepad.exe", _
vbNullString, vbNullString, 1
End Sub

Si por casualidad quieres abrir un documento de Microsoft Word, utiliza la
siguiente sintaxis:

Private Sub Command2_Click()
' Abre el documento seleccionado en el control
ShellExecute Form1.hwnd, "open", "C:\Mis documentos\Documento1.doc", _
vbNullString, vbNullString, 1
End Sub

Enrique Martínez
[MS MVP - VB]


Respuesta Responder a este mensaje
#4 Javier Balkenende
04/08/2003 - 03:57 | Informe spam
Yo hace mucho tuve un problema similar, si ejecutaba un programa desde el
explorer andaba, pero si lo hacía con Shell desde un programa mío no. En ese
momento, como yo tenía en ese mismo programa todos los medios para generar
un acceso directo (y además no conocía ShellExecute) lo que hice fue crear
un acceso directo y ahí le colocaba para que el directorio de trabajo que
sea el mismo donde el exe estaba, y así andaba sin problemas.
El tipo de error puede ser cualquiera según el programa, en mi caso no
encontraba un archivo .bmp

Ahora, si ShellExecute usa por defecto el mismo directorio donde está el exe
como directorio de trabajo en ese caso no sería necesario pasar el parámetro
"pdirectory"

Saludos,
Javier


"Softjaen" escribió en el mensaje
news:

"Javier Balkenende" escribió:

> Lo que se me ocurre que puede estar ocurriendo es
> que el exe necesita que el directorio de trabajo sea
> el mismo donde está.

Hola, Javier:

Sobre los errores que indica Caio, no creo que tenga nada que ver. La
definición del parámetro «pathname» de la función «Shell» de Visual Basic


es
clara y concisa: «el nombre del programa a ejecutar y de cualquier


argumento
necesario o modificador de la línea de comandos; puede incluir directorio


o
carpeta y unidad de disco.»

> Para eso creo que se puede usar el parámetro pdirectory de la función
> ShellExecute.
>

En cuanto al parámetro «pdirectory» de la función API «ShellExecute», el
mismo incluirá una variable «String» con la trayectoria completa del
directorio que se utilizará, pero que no es necesario que se indique su
valor, salvo que el archivo ejecutable necesite conocer, o nosotros le
queramos indicar, la ruta de la carpeta que se utilizará para trabajar.

Por supuesto que con la función «Shell» no se le puede indicar el


directorio
que se utilizará, salvo que se le pase algún valor que el ejecutable lo


lea
con la función «Command». Pero que si el archivo ejecutable necesita


conocer
el directorio que se utilizará, entonces deberá utilizar la función API
«ShellExecute» en lugar de la función de VB «Shell»:

ShellExecute Form1.hwnd, "open", "C:\Mis documentos\Documento1.doc", _
vbNullString, "C:\Windows\Temp", 1


Un saludo.

Enrique Martínez
[MS MVP - VB]


Respuesta Responder a este mensaje
#5 Javier Balkenende
04/08/2003 - 07:34 | Informe spam
Ahora, si ShellExecute usa por defecto el mismo directorio donde está el


exe
como directorio de trabajo en ese caso no sería necesario pasar el


parámetro
"pdirectory"



Acabo de hacer la prueba con un programa simple que carga una imagen en un
picturebox sin especificar el path. Al lanzarlo desde otro programa VB con
ShellExecute, si no se especifica "pdirectory" salta el error al igual que
pasa con Shell, pero colocando el directorio de trabajo en "pdirectory" anda
bien.

Para mi que debe ser esto lo que le pasa a Caio, porque ¿Qué otra diferencia
habría entre lanzar un programa con Shell y desde el explorer?

Saludos,
Javier



"Javier Balkenende" escribió en el mensaje
news:ekAy$
Yo hace mucho tuve un problema similar, si ejecutaba un programa desde el
explorer andaba, pero si lo hacía con Shell desde un programa mío no. En


ese
momento, como yo tenía en ese mismo programa todos los medios para generar
un acceso directo (y además no conocía ShellExecute) lo que hice fue crear
un acceso directo y ahí le colocaba para que el directorio de trabajo que
sea el mismo donde el exe estaba, y así andaba sin problemas.
El tipo de error puede ser cualquiera según el programa, en mi caso no
encontraba un archivo .bmp

Ahora, si ShellExecute usa por defecto el mismo directorio donde está el


exe
como directorio de trabajo en ese caso no sería necesario pasar el


parámetro
"pdirectory"

Saludos,
Javier


"Softjaen" escribió en el mensaje
news:
>
> "Javier Balkenende" escribió:
>
> > Lo que se me ocurre que puede estar ocurriendo es
> > que el exe necesita que el directorio de trabajo sea
> > el mismo donde está.
>
> Hola, Javier:
>
> Sobre los errores que indica Caio, no creo que tenga nada que ver. La
> definición del parámetro «pathname» de la función «Shell» de Visual


Basic
es
> clara y concisa: «el nombre del programa a ejecutar y de cualquier
argumento
> necesario o modificador de la línea de comandos; puede incluir


directorio
o
> carpeta y unidad de disco.»
>
> > Para eso creo que se puede usar el parámetro pdirectory de la función
> > ShellExecute.
> >
>
> En cuanto al parámetro «pdirectory» de la función API «ShellExecute», el
> mismo incluirá una variable «String» con la trayectoria completa del
> directorio que se utilizará, pero que no es necesario que se indique su
> valor, salvo que el archivo ejecutable necesite conocer, o nosotros le
> queramos indicar, la ruta de la carpeta que se utilizará para trabajar.
>
> Por supuesto que con la función «Shell» no se le puede indicar el
directorio
> que se utilizará, salvo que se le pase algún valor que el ejecutable lo
lea
> con la función «Command». Pero que si el archivo ejecutable necesita
conocer
> el directorio que se utilizará, entonces deberá utilizar la función API
> «ShellExecute» en lugar de la función de VB «Shell»:
>
> ShellExecute Form1.hwnd, "open", "C:\Mis documentos\Documento1.doc", _
> vbNullString, "C:\Windows\Temp", 1
>
>
> Un saludo.
>
> Enrique Martínez
> [MS MVP - VB]
>
>


email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida