PDA

Ver la Versión Completa : Como saber cuando un programa msdos llamado con shellexecute ha acabado


tcp_ip_es
18-07-2006, 13:15:11
Pues mismamente lo que pongo en el asunto, necesito llamar a un programa desde mi aplicación y despues de que ese programa se ejecute, tengo que mirar el log que ha generado para en funcion de lo que ponga borrar o no una tabla


if ShellExecute(FPal.Handle,nil,PChar(Programa),PChar(parametros),'',SW_SHOWNORMAL) <> ERROR_FILE_NOT_FOUND then
//Examinar el fichero log y si no tiene errores Borrar tabla ControlCambiosP
showmessage('Prueba')
else
showmessage('No se puede acceder al programa: '''+Programa+''' puede que la ruta sea incorrecta ');



tal y como lo tengo el showmessage prueba sale antes de que el proceso haya acabado con lo que si en esas lineas mirara el log del proceso que ejecuta el otro programa no existiría... es como si lanzara en proceso de fondo el shellexecute y siguiera con lo siguiente, vamos que lo hace asi seguro.... que solución me proponeis??? :confused:

Gracias de antemano, Saludos, Tony

seoane
18-07-2006, 13:44:50
En la sección de trucos encontraras varios que sirven para ejecutar un programa y esperar a que termine ( truco 30 (http://www.clubdelphi.com/trucos/index.php?id=30), truco 168 (http://www.clubdelphi.com/trucos/index.php?id=168), etc), pero permite adivinar tu situación y si estoy equivocado, lo mas seguro, ignoras lo siguiente. Tienes un programa de dos y estas redirigiendo su salida a un archivo para luego poder leerlo, si es esa la situación, te sugiero el truco 54 (http://www.clubdelphi.com/trucos/index.php?id=54), es una función que le pasas un programa o comando de dos, con todos sus parámetros, y te devuelve la salida en un string.

tcp_ip_es
19-07-2006, 09:33:00
Al final el truco elegido ha sido ...... el 30 !!! :D el programita al que llamo es un bat que a su vez llama un programita java, y este realiza un proceso y genera un log y ese el es fichero que posteriormente tengo que leer, por eso el truco 54 no me sirve pero realmente es interesante :D

Muchas gracias Seoane por tu ayuda,
Saludos, Tony