WinExecAndWait
Autor: Dipl.-Math. Werner Voigt
veröffentlicht in Toolbox
Copyright 2003 © Werner Voigt und Toolbox
Bitte beachten Sie auch die Hinweise zur kommerziellen Nutzung
Problem:
Ein DOS-Programm starten und auf seine Beendigung warten
Lösung:
In einem Quelltext von Roman Puls (Programm Finder) im PC-Magazin 1/2000 ist die Lösung zum Warteproblem.
Es gibt in der Windows-API zum Warten auf bestimmte Ereignisse die Funktion WaitForSingleObject. Man muß ihr nur das im Parameter lpProcessInformation von CreateProcess angegebene Handle hProcess und eine Zeitspanne, die man längstens warten will übergeben. Dann liefert WaitForSingleObject die Aussage, ob das Zeitintervall abgelaufen ist oder der Prozeß endete.
WaitForSingleObject wartet auf sehr effektive Weise, sodaß nur wenig CPU-Leistung verbraucht wird. Dies wird in der Windows-SDK-Hilfe gut beschrieben. Bei dieser Kombination aus CreateProcess und WaitForSingleObject wird ganz nebenbei das entsprechende Fenster geschlossen.
Das Beispielprogramm startet ein frei zu wählendes (DOS-)Programm ohne Angabe irgendwelcher Parameter und mißt dessen Laufzeit in Schritten von 100ms.
