Esta página puede ayudarte:
Determinar si un proceso ha terminado
En realidad es para cualquier aplicación. Se basa en la manera de lanzar la aplicación externa, empleando OpenProcess, y luego delegar en la función API WaitForSingleObject la tarea de esperar a que acabe.
En la misma página tienes
este otro método, pero me parece mas elegante el primero...