| Artículos | 01 NOV 1995

Truco 139: Sincronizador para Windows

Tags: Histórico
Aurelio Llorente.

Windows 3.1 es un "sistema operativo" multitarea (aunque es el programador el responsable de que así funcione), y por tanto es posible ejecutar varias aplicaciones simultáneamente. El API de Windows proporciona funciones, tales como WinExec, para poder lanzar ejecutables desde nuestro propio programa ejecutando así tareas en paralelo; pero lo que no facilita es la sincronización de tareas, de modo que podamos detener la ejecución de nuestro programa hasta que otro finalice.

Esta utilidad permite detener la ejecución de nuestro programa Windows hasta que otro que esté en ejecución (normalmente arrancado por nosotros mismos) haya terminado o bien haya transcurrido un tiempo que le marcamos como máximo de espera.

La utilidad se proporciona a través de una DLL, que contiene una función exportada con el ordinal número 2 "EsperaFin" y cuyos parámetros son:

- HINSTANCE hInstDeTarea. Instancia de la tarea a la cual se desea esperar.

- DWORD dwTdeEspera. Tiempo máximo de espera ( en milisegundos) hasta que acabe la tarea indicada. Si se especifica un 0, se espera indefinidamente hasta que la tarea termine.

La función usa el HINSTANCE para asegurar que realmente se espera a la tarea que se desea, pues se podrían estar ejecutando simultáneamente varias copias de la misma aplicación, y la única forma de identificar unívocamente a una tarea es usando su HINSTANCE. De hecho WinExec devuelve el HINSTANCE de la aplicación que lanza.

Así, por ejemplo, si nuestro programa necesitase arrancar Microsoft Word, y esperar indefinidamente a que se cierre, usaríamos el código :

HINSTANCE hInst;

...

hInst = WinExec( "C:\\WINWORD\\WINWORD.EXE", SW_SHOWNORMAL );

EsperaFin( hInst, 0 );

Esta utilidad se podría usar como base para escribir más utilidades en las que se obtenga el HINSTANCE de otras formas distintas a un WinExec.

Para poder hacer las pruebas pertinentes adjunto también un programa Windows básico "TEST.EXE", que mediante un menú arranca Microsoft Word y espera a que dicha copia termine de ejecutarse.

La utilidad y el programa TEST se han realizado íntegramente con Microsoft QC Windows 1.00, utilizando en ambos casos el modelo de memoria "small".

Ander Martínez Borregá

(Vitoria. Alava)

Contenidos recomendados...

Comentar
Para comentar, es necesario iniciar sesión
Se muestran 0 comentarios
X

Uso de cookies

Esta web utiliza cookies técnicas, de personalización y análisis, propias y de terceros, para facilitarle la navegación de forma anónima y analizar estadísticas del uso de la web. Consideramos que si continúa navegando, acepta su uso. Obtener más información