In order for this site to work correctly we need to store a small file (called a cookie) on your computer. Most every site in the world does this, however since the 25th of May 2011, by law we have to get your permission first. Please abandon the forum if you disagree.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Para que este foro funcione correctamente es necesario guardar un pequeño fichero (llamado cookie) en su ordenador. La mayoría de los sitios de Internet lo hacen, no obstante desde el 25 de Marzo de 2011 y por ley, necesitamos de su permiso con antelación. Abandone este foro si no está conforme.
Execute: no se como hacerlo funcionar
Execute: no se como hacerlo funcionar
Hola
Quiero ejecutar un programa situado en una ubicación compartida de red.
Para ello hago lo siguiente:
LOCAL cPath, n
LOCAL cPath, n
cPath := "PROGRAMACION_01bda demosKaisPDApreventapda.exe"
Logdebug(FileFullName(cPath)) //---> preventapda.exe
logdebug(FilePath(cPath)+"") // programacion_01bda_demoskaispda
n := Execute(FileFullName(cPath),FilePath(cPath)+"", .T.)
logdebug(n) // 0
cPath contiene la ruta y nombre correcto del programa a ejecutar.
N siempre devuelve 0 (creo que 0 significa salida con éxito).
Pero NO se ejecuta el programa.
Si desde la linea de comandos del MSDOS pongo el contenido de cPath, el
programa se ejecuta normalmente.
Saludos y gracias por vuestra ayuda.
José Luis Capel
Quiero ejecutar un programa situado en una ubicación compartida de red.
Para ello hago lo siguiente:
LOCAL cPath, n
LOCAL cPath, n
cPath := "PROGRAMACION_01bda demosKaisPDApreventapda.exe"
Logdebug(FileFullName(cPath)) //---> preventapda.exe
logdebug(FilePath(cPath)+"") // programacion_01bda_demoskaispda
n := Execute(FileFullName(cPath),FilePath(cPath)+"", .T.)
logdebug(n) // 0
cPath contiene la ruta y nombre correcto del programa a ejecutar.
N siempre devuelve 0 (creo que 0 significa salida con éxito).
Pero NO se ejecuta el programa.
Si desde la linea de comandos del MSDOS pongo el contenido de cPath, el
programa se ejecuta normalmente.
Saludos y gracias por vuestra ayuda.
José Luis Capel
Execute: no se como hacerlo funcionar
José,
El ShellExecute lo estoy usando en otro punto de la aplicación y
aparentemente va bien. El motivo de usar el Execute es por que necesito que
mi aplicación se espere hasta que cierren la aplicación que llamo. Si hay
alguna manera de hacerlo con ShellExecute dímelo...
Saludos y gracias,
José Luis Capel
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:[email=45463c41@news.xailer.com...]45463c41@news.xailer.com...[/email]
> José Luis,
>
> ¿te funciona con ShellExecute()?
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
>
El ShellExecute lo estoy usando en otro punto de la aplicación y
aparentemente va bien. El motivo de usar el Execute es por que necesito que
mi aplicación se espere hasta que cierren la aplicación que llamo. Si hay
alguna manera de hacerlo con ShellExecute dímelo...
Saludos y gracias,
José Luis Capel
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:[email=45463c41@news.xailer.com...]45463c41@news.xailer.com...[/email]
> José Luis,
>
> ¿te funciona con ShellExecute()?
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
>
Execute: no se como hacerlo funcionar
José Luis,
> El ShellExecute lo estoy usando en otro punto de la aplicación y
> aparentemente va bien. El motivo de usar el Execute es por que necesito
> que mi aplicación se espere hasta que cierren la aplicación que llamo. Si
> hay alguna manera de hacerlo con ShellExecute dímelo...
No, no es cuestión de buscar otra forma de hacerlo, simplemente quería saber
si el problema es un bug de la función o es algún valor incorrecto que le
estés pasando. Revisando de nuevo tu primer mensaje veo que estás llamando
así a la función:
n := Execute(FileFullName(cPath),FilePath(cPath)+"", .T.)
lo que significa que el nombre del ejecutable (el primer parámetro) no lleva
el path incluido. Prueba a pasarle directamente cPath, y no FileFullName(
cPath ).
--
Un saludo,
José F. Giménez
http://www.xailer.com
> El ShellExecute lo estoy usando en otro punto de la aplicación y
> aparentemente va bien. El motivo de usar el Execute es por que necesito
> que mi aplicación se espere hasta que cierren la aplicación que llamo. Si
> hay alguna manera de hacerlo con ShellExecute dímelo...
No, no es cuestión de buscar otra forma de hacerlo, simplemente quería saber
si el problema es un bug de la función o es algún valor incorrecto que le
estés pasando. Revisando de nuevo tu primer mensaje veo que estás llamando
así a la función:
n := Execute(FileFullName(cPath),FilePath(cPath)+"", .T.)
lo que significa que el nombre del ejecutable (el primer parámetro) no lleva
el path incluido. Prueba a pasarle directamente cPath, y no FileFullName(
cPath ).
--
Un saludo,
José F. Giménez
http://www.xailer.com
Execute: no se como hacerlo funcionar
José,
Estoy poniendo los parámetros como dice la ayuda. No obstante, poniendo
primero el nombre y después el path parece que hace el amago de ejecutar el
programa (aparece una ventana de consola msdos unos segundos). Voy a ver si
es cuestión de poner al final "" o no.
Saludos y gracias,
José Luis Capel
Execute
Ejecuta un proceso externo.
Categoría:
DLLs y ejecución
Parametros:
<cFile>
Fichero a ejecutar
[<cDir>]
Directorio de comienzo. Si se deja en blanco, toma la ruta de la
aplicación que va a ejecutar. Si la aplicación no contiene una ruta en el
nombre entonces se toma Application:CurDir
<lWait>
Si verdadero la aplicación esperará hasta que termine el proceso
Valor Retorno:
<hProcess | nExitCode>
Handle al proceso cuando lWait es falso, y código de salida del
proceso en caso contrario
Módulo:
Util.c
Ver también:
ShellExecute, ShellExecuteEx, WinExec
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:45464839$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> José Luis,
>
>> El ShellExecute lo estoy usando en otro punto de la aplicación y
>> aparentemente va bien. El motivo de usar el Execute es por que necesito
>> que mi aplicación se espere hasta que cierren la aplicación que llamo.
>> Si
>> hay alguna manera de hacerlo con ShellExecute dímelo...
>
> No, no es cuestión de buscar otra forma de hacerlo, simplemente quería
> saber
> si el problema es un bug de la función o es algún valor incorrecto que le
> estés pasando. Revisando de nuevo tu primer mensaje veo que estás llamando
> así a la función:
>
> n := Execute(FileFullName(cPath),FilePath(cPath)+"", .T.)
>
> lo que significa que el nombre del ejecutable (el primer parámetro) no
> lleva
> el path incluido. Prueba a pasarle directamente cPath, y no FileFullName(
> cPath ).
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
>
>
Attached files
Estoy poniendo los parámetros como dice la ayuda. No obstante, poniendo
primero el nombre y después el path parece que hace el amago de ejecutar el
programa (aparece una ventana de consola msdos unos segundos). Voy a ver si
es cuestión de poner al final "" o no.
Saludos y gracias,
José Luis Capel
Execute
Ejecuta un proceso externo.
Categoría:
DLLs y ejecución
Parametros:
<cFile>
Fichero a ejecutar
[<cDir>]
Directorio de comienzo. Si se deja en blanco, toma la ruta de la
aplicación que va a ejecutar. Si la aplicación no contiene una ruta en el
nombre entonces se toma Application:CurDir
<lWait>
Si verdadero la aplicación esperará hasta que termine el proceso
Valor Retorno:
<hProcess | nExitCode>
Handle al proceso cuando lWait es falso, y código de salida del
proceso en caso contrario
Módulo:
Util.c
Ver también:
ShellExecute, ShellExecuteEx, WinExec
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:45464839$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> José Luis,
>
>> El ShellExecute lo estoy usando en otro punto de la aplicación y
>> aparentemente va bien. El motivo de usar el Execute es por que necesito
>> que mi aplicación se espere hasta que cierren la aplicación que llamo.
>> Si
>> hay alguna manera de hacerlo con ShellExecute dímelo...
>
> No, no es cuestión de buscar otra forma de hacerlo, simplemente quería
> saber
> si el problema es un bug de la función o es algún valor incorrecto que le
> estés pasando. Revisando de nuevo tu primer mensaje veo que estás llamando
> así a la función:
>
> n := Execute(FileFullName(cPath),FilePath(cPath)+"", .T.)
>
> lo que significa que el nombre del ejecutable (el primer parámetro) no
> lleva
> el path incluido. Prueba a pasarle directamente cPath, y no FileFullName(
> cPath ).
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
>
>
Attached files
Execute: no se como hacerlo funcionar
José,
Estoy poniendo los parámetros como dice la ayuda. No obstante, poniendo
primero el nombre y después el path parece que hace el amago de ejecutar el
programa (aparece una ventana de consola msdos unos segundos). Voy a ver si
es cuestión de poner al final "" o no.
Saludos y gracias,
José Luis Capel
Execute
Ejecuta un proceso externo.
Categoría:
DLLs y ejecución
Parametros:
<cFile>
Fichero a ejecutar
[<cDir>]
Directorio de comienzo. Si se deja en blanco, toma la ruta de la
aplicación que va a ejecutar. Si la aplicación no contiene una ruta en el
nombre entonces se toma Application:CurDir
<lWait>
Si verdadero la aplicación esperará hasta que termine el proceso
Valor Retorno:
<hProcess | nExitCode>
Handle al proceso cuando lWait es falso, y código de salida del
proceso en caso contrario
Módulo:
Util.c
Ver también:
ShellExecute, ShellExecuteEx, WinExec
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:45464839$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> José Luis,
>
>> El ShellExecute lo estoy usando en otro punto de la aplicación y
>> aparentemente va bien. El motivo de usar el Execute es por que necesito
>> que mi aplicación se espere hasta que cierren la aplicación que llamo.
>> Si
>> hay alguna manera de hacerlo con ShellExecute dímelo...
>
> No, no es cuestión de buscar otra forma de hacerlo, simplemente quería
> saber
> si el problema es un bug de la función o es algún valor incorrecto que le
> estés pasando. Revisando de nuevo tu primer mensaje veo que estás llamando
> así a la función:
>
> n := Execute(FileFullName(cPath),FilePath(cPath)+"", .T.)
>
> lo que significa que el nombre del ejecutable (el primer parámetro) no
> lleva
> el path incluido. Prueba a pasarle directamente cPath, y no FileFullName(
> cPath ).
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
>
>
Attached files
Estoy poniendo los parámetros como dice la ayuda. No obstante, poniendo
primero el nombre y después el path parece que hace el amago de ejecutar el
programa (aparece una ventana de consola msdos unos segundos). Voy a ver si
es cuestión de poner al final "" o no.
Saludos y gracias,
José Luis Capel
Execute
Ejecuta un proceso externo.
Categoría:
DLLs y ejecución
Parametros:
<cFile>
Fichero a ejecutar
[<cDir>]
Directorio de comienzo. Si se deja en blanco, toma la ruta de la
aplicación que va a ejecutar. Si la aplicación no contiene una ruta en el
nombre entonces se toma Application:CurDir
<lWait>
Si verdadero la aplicación esperará hasta que termine el proceso
Valor Retorno:
<hProcess | nExitCode>
Handle al proceso cuando lWait es falso, y código de salida del
proceso en caso contrario
Módulo:
Util.c
Ver también:
ShellExecute, ShellExecuteEx, WinExec
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:45464839$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> José Luis,
>
>> El ShellExecute lo estoy usando en otro punto de la aplicación y
>> aparentemente va bien. El motivo de usar el Execute es por que necesito
>> que mi aplicación se espere hasta que cierren la aplicación que llamo.
>> Si
>> hay alguna manera de hacerlo con ShellExecute dímelo...
>
> No, no es cuestión de buscar otra forma de hacerlo, simplemente quería
> saber
> si el problema es un bug de la función o es algún valor incorrecto que le
> estés pasando. Revisando de nuevo tu primer mensaje veo que estás llamando
> así a la función:
>
> n := Execute(FileFullName(cPath),FilePath(cPath)+"", .T.)
>
> lo que significa que el nombre del ejecutable (el primer parámetro) no
> lleva
> el path incluido. Prueba a pasarle directamente cPath, y no FileFullName(
> cPath ).
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
>
>
Attached files
Execute: no se como hacerlo funcionar
José,
Estoy poniendo los parámetros como dice la ayuda. No obstante, poniendo
primero el nombre y después el path parece que hace el amago de ejecutar el
programa (aparece una ventana de consola msdos unos segundos). Voy a ver si
es cuestión de poner al final "" o no.
Saludos y gracias,
José Luis Capel
Execute
Ejecuta un proceso externo.
Categoría:
DLLs y ejecución
Parametros:
<cFile>
Fichero a ejecutar
[<cDir>]
Directorio de comienzo. Si se deja en blanco, toma la ruta de la
aplicación que va a ejecutar. Si la aplicación no contiene una ruta en el
nombre entonces se toma Application:CurDir
<lWait>
Si verdadero la aplicación esperará hasta que termine el proceso
Valor Retorno:
<hProcess | nExitCode>
Handle al proceso cuando lWait es falso, y código de salida del
proceso en caso contrario
Módulo:
Util.c
Ver también:
ShellExecute, ShellExecuteEx, WinExec
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:45464839$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> José Luis,
>
>> El ShellExecute lo estoy usando en otro punto de la aplicación y
>> aparentemente va bien. El motivo de usar el Execute es por que necesito
>> que mi aplicación se espere hasta que cierren la aplicación que llamo.
>> Si
>> hay alguna manera de hacerlo con ShellExecute dímelo...
>
> No, no es cuestión de buscar otra forma de hacerlo, simplemente quería
> saber
> si el problema es un bug de la función o es algún valor incorrecto que le
> estés pasando. Revisando de nuevo tu primer mensaje veo que estás llamando
> así a la función:
>
> n := Execute(FileFullName(cPath),FilePath(cPath)+"", .T.)
>
> lo que significa que el nombre del ejecutable (el primer parámetro) no
> lleva
> el path incluido. Prueba a pasarle directamente cPath, y no FileFullName(
> cPath ).
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
>
>
Attached files
Estoy poniendo los parámetros como dice la ayuda. No obstante, poniendo
primero el nombre y después el path parece que hace el amago de ejecutar el
programa (aparece una ventana de consola msdos unos segundos). Voy a ver si
es cuestión de poner al final "" o no.
Saludos y gracias,
José Luis Capel
Execute
Ejecuta un proceso externo.
Categoría:
DLLs y ejecución
Parametros:
<cFile>
Fichero a ejecutar
[<cDir>]
Directorio de comienzo. Si se deja en blanco, toma la ruta de la
aplicación que va a ejecutar. Si la aplicación no contiene una ruta en el
nombre entonces se toma Application:CurDir
<lWait>
Si verdadero la aplicación esperará hasta que termine el proceso
Valor Retorno:
<hProcess | nExitCode>
Handle al proceso cuando lWait es falso, y código de salida del
proceso en caso contrario
Módulo:
Util.c
Ver también:
ShellExecute, ShellExecuteEx, WinExec
"Jose F. Gimenez" <jfgimenez@wanadoo.es> escribió en el mensaje
news:45464839$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
> José Luis,
>
>> El ShellExecute lo estoy usando en otro punto de la aplicación y
>> aparentemente va bien. El motivo de usar el Execute es por que necesito
>> que mi aplicación se espere hasta que cierren la aplicación que llamo.
>> Si
>> hay alguna manera de hacerlo con ShellExecute dímelo...
>
> No, no es cuestión de buscar otra forma de hacerlo, simplemente quería
> saber
> si el problema es un bug de la función o es algún valor incorrecto que le
> estés pasando. Revisando de nuevo tu primer mensaje veo que estás llamando
> así a la función:
>
> n := Execute(FileFullName(cPath),FilePath(cPath)+"", .T.)
>
> lo que significa que el nombre del ejecutable (el primer parámetro) no
> lleva
> el path incluido. Prueba a pasarle directamente cPath, y no FileFullName(
> cPath ).
>
> --
> Un saludo,
>
> José F. Giménez
> http://www.xailer.com
>
>
Attached files
Execute: no se como hacerlo funcionar
José Luis,
Ya me encontré con ese problema hace tiempo, y lo que hice es lo siguiente, guardar y cambiar de directorio de trabajo...
Este proceso me funciona perfectamente en mi aplicación.
Procedure xWinExecGES( cMenu, nShow )
local cOldDir := CurDrive() + ":" + CurDir()
DirChange( AppData:cRuta )
WinExec( "Ges.exe " + AppData:cCodiEmpresa + cMenu, If( nShow = Nil, SW_NORMAL, nShow ), .F. )
DirChange( cOldDir )
Return
Lo he probado con Execute() y ShellExecute... y funciona si antes salvo, cambio y vuelvo al directorio.
ahora bien... eso de terminar hasta que termine la aplicación MS-DOS, puedes encontrarte en que tu aplicación Xailer te diga [No responde]
Un Saludo,
Xevi.
"José Luis Capel" <jose.luis@iaicom.com> ha escrit al missatge del grup de discussió: [email=4545bfe8@news.xailer.com...]4545bfe8@news.xailer.com...[/email]
> Hola
>
> Quiero ejecutar un programa situado en una ubicación compartida de red.
> Para ello hago lo siguiente:
>
> LOCAL cPath, n
>
> LOCAL cPath, n
>
> cPath := "PROGRAMACION_01bda demosKaisPDApreventapda.exe"
> Logdebug(FileFullName(cPath)) //---> preventapda.exe
> logdebug(FilePath(cPath)+"") // programacion_01bda_demoskaispda
> n := Execute(FileFullName(cPath),FilePath(cPath)+"", .T.)
>
> logdebug(n) // 0
>
>
> cPath contiene la ruta y nombre correcto del programa a ejecutar.
>
> N siempre devuelve 0 (creo que 0 significa salida con éxito).
>
> Pero NO se ejecuta el programa.
>
> Si desde la linea de comandos del MSDOS pongo el contenido de cPath, el
> programa se ejecuta normalmente.
>
> Saludos y gracias por vuestra ayuda.
> José Luis Capel
>
>
--
Ya me encontré con ese problema hace tiempo, y lo que hice es lo siguiente, guardar y cambiar de directorio de trabajo...
Este proceso me funciona perfectamente en mi aplicación.
Procedure xWinExecGES( cMenu, nShow )
local cOldDir := CurDrive() + ":" + CurDir()
DirChange( AppData:cRuta )
WinExec( "Ges.exe " + AppData:cCodiEmpresa + cMenu, If( nShow = Nil, SW_NORMAL, nShow ), .F. )
DirChange( cOldDir )
Return
Lo he probado con Execute() y ShellExecute... y funciona si antes salvo, cambio y vuelvo al directorio.
ahora bien... eso de terminar hasta que termine la aplicación MS-DOS, puedes encontrarte en que tu aplicación Xailer te diga [No responde]
Un Saludo,
Xevi.
"José Luis Capel" <jose.luis@iaicom.com> ha escrit al missatge del grup de discussió: [email=4545bfe8@news.xailer.com...]4545bfe8@news.xailer.com...[/email]
> Hola
>
> Quiero ejecutar un programa situado en una ubicación compartida de red.
> Para ello hago lo siguiente:
>
> LOCAL cPath, n
>
> LOCAL cPath, n
>
> cPath := "PROGRAMACION_01bda demosKaisPDApreventapda.exe"
> Logdebug(FileFullName(cPath)) //---> preventapda.exe
> logdebug(FilePath(cPath)+"") // programacion_01bda_demoskaispda
> n := Execute(FileFullName(cPath),FilePath(cPath)+"", .T.)
>
> logdebug(n) // 0
>
>
> cPath contiene la ruta y nombre correcto del programa a ejecutar.
>
> N siempre devuelve 0 (creo que 0 significa salida con éxito).
>
> Pero NO se ejecuta el programa.
>
> Si desde la linea de comandos del MSDOS pongo el contenido de cPath, el
> programa se ejecuta normalmente.
>
> Saludos y gracias por vuestra ayuda.
> José Luis Capel
>
>
--
Execute: no se como hacerlo funcionar
José Luis,
> Estoy poniendo los parámetros como dice la ayuda. No obstante, poniendo
> primero el nombre y después el path parece que hace el amago de ejecutar
> el
> programa (aparece una ventana de consola msdos unos segundos). Voy a ver
> si
> es cuestión de poner al final "" o no.
La ayuda indica que el primer parámetro es el fichero a ejecutar, pero no
dice que haya que ponerlo sin path
Si el fichero a ejecutar no está en
el directorio actual, hay que indicarle todo el path. Y el segundo parámetro
indica efectívamente el directorio que estará activo al ejecutarlo; es
exactamente igual que el apartado "Iniciar en" o "Directorio de trabajo" de
los accesos directos.
--
Un saludo,
José F. Giménez
http://www.xailer.com
> Estoy poniendo los parámetros como dice la ayuda. No obstante, poniendo
> primero el nombre y después el path parece que hace el amago de ejecutar
> el
> programa (aparece una ventana de consola msdos unos segundos). Voy a ver
> si
> es cuestión de poner al final "" o no.
La ayuda indica que el primer parámetro es el fichero a ejecutar, pero no
dice que haya que ponerlo sin path

el directorio actual, hay que indicarle todo el path. Y el segundo parámetro
indica efectívamente el directorio que estará activo al ejecutarlo; es
exactamente igual que el apartado "Iniciar en" o "Directorio de trabajo" de
los accesos directos.
--
Un saludo,
José F. Giménez
http://www.xailer.com
Execute: no se como hacerlo funcionar
Xevi,
Ya me encontré con ese problema hace tiempo, y lo que hice es lo siguiente, guardar y cambiar de directorio de trabajo...
Este proceso me funciona perfectamente en mi aplicación.
Procedure xWinExecGES( cMenu, nShow )
local cOldDir := CurDrive() + ":" + CurDir()
DirChange( AppData:cRuta )
WinExec( "Ges.exe " + AppData:cCodiEmpresa + cMenu, If( nShow = Nil, SW_NORMAL, nShow ), .F. )
DirChange( cOldDir )
Return
Lo he probado con Execute() y ShellExecute... y funciona si antes salvo, cambio y vuelvo al directorio.
Acabo de hacer una prueba, y funciona perfectamente sin tener que cambiar el directorio previamente. En tu caso tendrías que ejecutarlo así:
Execute( AppData:cRuta + "Ges.exe" .... , AppData:cRuta )
Tened en cuenta que se puede ejecutar cualquier programa estando situados en otro directorio. P.ej., desde el símbolo del sistema:
C:Document and SettingsJose> c:windowssystem32notepad.exe
Con esto se ejecutará notepad.exe que está en c:windowssystem32, pero el directorio actual seguirá siendo c:Document and SettingsJose
ahora bien... eso de terminar hasta que termine la aplicación MS-DOS, puedes encontrarte en que tu aplicación Xailer te diga [No responde]
Eso es cierto, y por eso la función Execute() devuelve el handle del proceso que se ha creado, y se puede controlar a voluntad con las funciones IsRunning() y KillProcess()
--
Un saludo,
José F. Giménez
http://www.xailer.com
--
Ya me encontré con ese problema hace tiempo, y lo que hice es lo siguiente, guardar y cambiar de directorio de trabajo...
Este proceso me funciona perfectamente en mi aplicación.
Procedure xWinExecGES( cMenu, nShow )
local cOldDir := CurDrive() + ":" + CurDir()
DirChange( AppData:cRuta )
WinExec( "Ges.exe " + AppData:cCodiEmpresa + cMenu, If( nShow = Nil, SW_NORMAL, nShow ), .F. )
DirChange( cOldDir )
Return
Lo he probado con Execute() y ShellExecute... y funciona si antes salvo, cambio y vuelvo al directorio.
Acabo de hacer una prueba, y funciona perfectamente sin tener que cambiar el directorio previamente. En tu caso tendrías que ejecutarlo así:
Execute( AppData:cRuta + "Ges.exe" .... , AppData:cRuta )
Tened en cuenta que se puede ejecutar cualquier programa estando situados en otro directorio. P.ej., desde el símbolo del sistema:
C:Document and SettingsJose> c:windowssystem32notepad.exe
Con esto se ejecutará notepad.exe que está en c:windowssystem32, pero el directorio actual seguirá siendo c:Document and SettingsJose
ahora bien... eso de terminar hasta que termine la aplicación MS-DOS, puedes encontrarte en que tu aplicación Xailer te diga [No responde]
Eso es cierto, y por eso la función Execute() devuelve el handle del proceso que se ha creado, y se puede controlar a voluntad con las funciones IsRunning() y KillProcess()
--
Un saludo,
José F. Giménez
http://www.xailer.com
--
Execute: no se como hacerlo funcionar
Jose,
Gracias por tu respuesta.
Claro, ahora me doy cuenta de porqué en mi caso cambio de directorio... mi aplicación MS-DOS intenta acceder a ficheros que están en SU directorio, por eso necesito ir al directorio para ejecutar la aplicacióN y regresar al directorio para continuar con la aplicación Xailer.
Un Saludo,
Xevi.
"Jose F. Gimenez" <jfgimenez@wanadoo.es> ha escrit al missatge del grup de discussió: 4546599b$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
Xevi,
Ya me encontré con ese problema hace tiempo, y lo que hice es lo siguiente, guardar y cambiar de directorio de trabajo...
Este proceso me funciona perfectamente en mi aplicación.
Procedure xWinExecGES( cMenu, nShow )
local cOldDir := CurDrive() + ":" + CurDir()
DirChange( AppData:cRuta )
WinExec( "Ges.exe " + AppData:cCodiEmpresa + cMenu, If( nShow = Nil, SW_NORMAL, nShow ), .F. )
DirChange( cOldDir )
Return
Lo he probado con Execute() y ShellExecute... y funciona si antes salvo, cambio y vuelvo al directorio.
Acabo de hacer una prueba, y funciona perfectamente sin tener que cambiar el directorio previamente. En tu caso tendrías que ejecutarlo así:
Execute( AppData:cRuta + "Ges.exe" .... , AppData:cRuta )
Tened en cuenta que se puede ejecutar cualquier programa estando situados en otro directorio. P.ej., desde el símbolo del sistema:
C:Document and SettingsJose> c:windowssystem32notepad.exe
Con esto se ejecutará notepad.exe que está en c:windowssystem32, pero el directorio actual seguirá siendo c:Document and SettingsJose
ahora bien... eso de terminar hasta que termine la aplicación MS-DOS, puedes encontrarte en que tu aplicación Xailer te diga [No responde]
Eso es cierto, y por eso la función Execute() devuelve el handle del proceso que se ha creado, y se puede controlar a voluntad con las funciones IsRunning() y KillProcess()
--
Un saludo,
José F. Giménez
http://www.xailer.com
--
Gracias por tu respuesta.
Claro, ahora me doy cuenta de porqué en mi caso cambio de directorio... mi aplicación MS-DOS intenta acceder a ficheros que están en SU directorio, por eso necesito ir al directorio para ejecutar la aplicacióN y regresar al directorio para continuar con la aplicación Xailer.
Un Saludo,
Xevi.
"Jose F. Gimenez" <jfgimenez@wanadoo.es> ha escrit al missatge del grup de discussió: 4546599b$[email=1@news.xailer.com...]1@news.xailer.com...[/email]
Xevi,
Ya me encontré con ese problema hace tiempo, y lo que hice es lo siguiente, guardar y cambiar de directorio de trabajo...
Este proceso me funciona perfectamente en mi aplicación.
Procedure xWinExecGES( cMenu, nShow )
local cOldDir := CurDrive() + ":" + CurDir()
DirChange( AppData:cRuta )
WinExec( "Ges.exe " + AppData:cCodiEmpresa + cMenu, If( nShow = Nil, SW_NORMAL, nShow ), .F. )
DirChange( cOldDir )
Return
Lo he probado con Execute() y ShellExecute... y funciona si antes salvo, cambio y vuelvo al directorio.
Acabo de hacer una prueba, y funciona perfectamente sin tener que cambiar el directorio previamente. En tu caso tendrías que ejecutarlo así:
Execute( AppData:cRuta + "Ges.exe" .... , AppData:cRuta )
Tened en cuenta que se puede ejecutar cualquier programa estando situados en otro directorio. P.ej., desde el símbolo del sistema:
C:Document and SettingsJose> c:windowssystem32notepad.exe
Con esto se ejecutará notepad.exe que está en c:windowssystem32, pero el directorio actual seguirá siendo c:Document and SettingsJose
ahora bien... eso de terminar hasta que termine la aplicación MS-DOS, puedes encontrarte en que tu aplicación Xailer te diga [No responde]
Eso es cierto, y por eso la función Execute() devuelve el handle del proceso que se ha creado, y se puede controlar a voluntad con las funciones IsRunning() y KillProcess()
--
Un saludo,
José F. Giménez
http://www.xailer.com
--
Execute: no se como hacerlo funcionar
José,
>
> La ayuda indica que el primer parámetro es el fichero a ejecutar, pero no
> dice que haya que ponerlo sin path
Si el fichero a ejecutar no está
> en el directorio actual, hay que indicarle todo el path. Y el segundo
> parámetro indica efectívamente el directorio que estará activo al
> ejecutarlo; es exactamente igual que el apartado "Iniciar en" o
> "Directorio de trabajo" de los accesos directos.
>
Disculpadme... se ve que interpreté incorrectamente el texto de la ayuda.
Haciendo la llamada tal como me has indicado toooodo va bien.
Saludos y gracias por vuestra ayuda.
José Luis Capel
>
> La ayuda indica que el primer parámetro es el fichero a ejecutar, pero no
> dice que haya que ponerlo sin path

> en el directorio actual, hay que indicarle todo el path. Y el segundo
> parámetro indica efectívamente el directorio que estará activo al
> ejecutarlo; es exactamente igual que el apartado "Iniciar en" o
> "Directorio de trabajo" de los accesos directos.
>
Disculpadme... se ve que interpreté incorrectamente el texto de la ayuda.
Haciendo la llamada tal como me has indicado toooodo va bien.
Saludos y gracias por vuestra ayuda.
José Luis Capel