Page 1 of 1

Esperar a que termine la plicaion llamada con ShellExecute

Posted: Sun Oct 13, 2024 6:38 am
by J. Ernesto
Amigos buenas Noches... Días

Estoy llamando un programa externo para que envíe un archivo a un WS, usando shellexecute.
mi aplicación no alcanza a espera a que termine de ejecutarse el programa llamado con el shellexecute

Cómo implementar a que espere la terminación de segundo programa?

En el foro he visto shellexecuteEX?, alguien tiene un ejemplo de como usarlo...

O que otra alternativa tengo....

Muchas Gracias.....

Re: Esperar a que termine la plicaion llamada con ShellExecute

Posted: Sun Oct 13, 2024 7:25 am
by Enrico Maria Giordano
Use WAITRUN() instead.

Re: Esperar a que termine la plicaion llamada con ShellExecute

Posted: Sun Oct 13, 2024 1:15 pm
by karinha
See below all the values ??for the second parameter of the WAITRUN() function:

0 - Hides the window and passes the activation to another window.
1 - Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position (same as 9).
2 - Activates a window and displays it as an icon.
3 - Activates a window and displays it as a maximized window.
4 - Displays a window in its latest size and position. The window that is currently active remains active.
5 - Activates a window and shows it in its current size and location.
6 - Minimizes the specified window and activates the top-level window within the system list.
7 - Displays a window as an icon. The window that is currently active remains active.
8 - Displays a window, in its current state. The window that is currently active remains active.
9 - Activates and displays a window. If the window is minimized or maximized, Windows restores it to its original size and position (the same as 1).

Hugs,

xComando := "copy /b temp.txt prn > NUL"

WaitRun( xCOMMAND, 7 )

Regards, Saludos.

Re: Esperar a que termine la plicaion llamada con ShellExecute

Posted: Mon Oct 14, 2024 1:12 pm
by JoseAlvarez
J. Ernesto wrote:Amigos buenas Noches... Días

Estoy llamando un programa externo para que envíe un archivo a un WS, usando shellexecute.
mi aplicación no alcanza a espera a que termine de ejecutarse el programa llamado con el shellexecute

Cómo implementar a que espere la terminación de segundo programa?

En el foro he visto shellexecuteEX?, alguien tiene un ejemplo de como usarlo...

O que otra alternativa tengo....

Muchas Gracias.....
Ernesto, yo lo uso asi y me funciona, prueba...

Code: Select all | Expand

 ShellExecute( 0, "open", "whatsapp://send?phone="+alltrim(aQueryToSms[nCiclo,8])+"&text="+cTexto)
 do while IsExeRunning("ShellExecute.xsd")
 enddo

Re: Esperar a que termine la plicaion llamada con ShellExecute

Posted: Mon Oct 14, 2024 2:45 pm
by Enrico Maria Giordano
Interesting. But what is ShellExecute.xsd?

Re: Esperar a que termine la plicaion llamada con ShellExecute

Posted: Mon Oct 14, 2024 4:05 pm
by JoseAlvarez
Enrico Maria Giordano wrote:Interesting. But what is ShellExecute.xsd?

Enrico, good question. I asked myself the same thing when I couldn't find it with the .EXE extension

When I migrated to WINDOWS 11 I encountered that change. Apparently it has to do with something for XML compatibility.

Hopefully one of the masters will shed some light on this. (google traslator)


Enrico, buena pregunta. Me pregunté lo mismo al no encontrarlo con la extensión .EXE

Cuando migré a WINDOWS 11 me encontré con ese cambio. Al parecer tiene que ver con algo para compatibilidad de XML.

Ojalá uno de los master nos de una luz al respecto.

Re: Esperar a que termine la plicaion llamada con ShellExecute,

Posted: Mon Oct 14, 2024 10:58 pm
by J. Ernesto
José

Implemente algo similar y funciona perfectamente:

DO WHILE SW60 = " "
IF FILE ( ".\cufe_ok.txt" ); SW60 := "*"
ELSEIF FILE ( ".\cufe_error.txt" ); SW60 := "*"
ELSE ; SYSWAIT ( 0.1 )
ENDIF
ENDDO

Al llamar la segunda aplicación, esta debe devolver la creación de un txt.

Gracias.

Re: Esperar a que termine la plicaion llamada con ShellExecute

Posted: Mon Oct 14, 2024 11:04 pm
by JoseAlvarez
Excelente ernesto!!

Aún puedes mejorar ese código si usas iif y or preguntando por la existencia de los archivos y cambiando el suiche todo en una sola linea