ShellExecute auf Programmende warten
-
Hallo,
ich bin noch ein ziemlicher Anfänger und habe momentan diese Zeile:
ShellExecute(0, "open", "prog.exe", "/p", 0, SW_SHOWNORMAL);
Wie kann ich dem ShellExecute jetzt sagen, dass er auf das Ende von prog.exe warten soll?
Ich habe da etwas von "WaitForSingleObject" gelesen, weiß aber nicht, wie ich es benutze und was ich da an Parametern mitgeben soll.
Gruß zestrobX
-
Dazu musst Du ShellExecuteEx(..) benützen und dann mit WaitForSingleObject(..) darauf warten bis das Prozess Handle (hProcess) aus SHELLEXECUTEINFO signalisiert wird.
http://msdn.microsoft.com/en-us/library/windows/desktop/bb762154(v=vs.85).aspx
http://msdn.microsoft.com/en-us/library/windows/desktop/bb759784(v=vs.85).aspxDas Prozess Handle wird jedoch nicht in jedem Fall gesetzt. Eine Alternative ist CreateProcess(...) zu benützen.
-
PS: Leider ist CreateProcess nicht immer eine alternative; nur ShellExecute(Ex) kann mit UAC umgehen...