Controlar la ejecución de una aplicación

Necesito saber cuando ha terminado de ejecutarse una aplicación.
Tengo un proceso ( en MS-DOS ) que mezcla unos ficheros y los deja en uno solo. Necesito saber cuando ha terminado para eliminar los temporales ( lo que tiene que mezclar ).
Para llamar a la ejecución hago un RUN("aplicacion") pero la aplicación no se detiene en ese punto.
¿Cómo puedo saber a posterior que esta aplicación ha terminado?
He probado haciendo un bucle para controlar por el nombre de la ventana si está abierta pero se queda bloqueada, cuando paro el bucle continua su proceso y cierra la ventana.
O mejor, ¿Cómo puedo darle algo de prioridad para que se ejecute en segundo plano?

1 Respuesta

Respuesta
1
La función RUN() es una invocación directa al sistema operativo, el nombre de la aplicación que se envía como parámetro es aperturada inmediatamente, la desventaja que tiene esta función, es que no mantiene un control directo con las aplicaciones o batches que apertura, sino que abre la aplicación y pierde el control sobre esta,
Una vez tuve un problema parecido, en donde convertía una imagen jpg a bmp por medio de un convertidor, el tiempo que esta utilidad empleaba dependía del tamaño de la imagen origen, y por supuesto no era inmediato, lo que hice y se me ocurre que puede funcionarte también, es que prepare un batch o script tipo d.o.s. y a este le cree un shortcut, el cual se ejecutaba minimizado y era cerrado al finalizar la aplicación, en el script incluía la creación de un fichero el cual me indicaba que el proceso había finalizado, y luego dentro de mi programa pb, entraba en un while (loop) en el cual siempre estaba preguntando por la existencia del fichero, cuando este lo encontraba, asumía que la imagen ya estaba creada, y que ya podía cargarla y por supuesto pintarla, realmente esto me funciono bastante bien.
Si quisieras sofisticar un poco este proceso se me ocurre que podrías buscar el handle de la aplicación que aperturaras con la función run, y preguntar si esta se encuentra activa,
esto claro por medio de llamadas api,
si esta fuera tu inclinación y te pareciera muy arcaica la anterior solución, te envío una dirección en la cual encontraras la forma de como averiguar la existencia activa de una aplicación.
http://lmamartin.eresmas.net/
Es el truco 27 de la primera parte de trucos, este también sirve para detener una aplicación.
Gracias, más o menos es la solución que al final había llegado por mi cuenta. Por lo menos creo que no soy el único que se ha vuelto loco con el RUN()

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas