Für Laufi's Variante brauchst du erstmal das Prozeßhandle mit korrekten Zugriffsrechten. Danach kannst du tatsächlich dieses
Handle an WaitForSingleObject oder (zB s.o.) eine andere Wait-Funktion übergeben und auf die Beendigung warten.
Allerdings gibt es keine Möglichkeit dies für beliebige Prozesse (deren
Handle du dann z.B. nicht hast) zu machen. Es gibt allerdings im Kernelmode eine Variante, die ich bei Interesse gern näher beschreibe (ab Windows 2000).