Ich versuche, eine externe Anwendung mit erhöhtem Status zu starten, und warte, bis sie beendet ist, bevor ich fortfahre:
%Vor%Dies startet, aber es wartet nur weiter. Das aufrufende Programm wird niemals nach dem Aufruf von WaitForSingleObject fortgesetzt, selbst nachdem das aufgerufene Programm beendet wurde.
Ich habe WAIT_OBJECT_0 anstelle von WAIT_TIMEOUT versucht, aber ich habe das gleiche Problem. Was mache ich hier falsch?
Dein Code ist kaputt. Sie übergeben das SEE_MASK_NOCLOSEPROCESS
-Flag nicht an ShellExecuteEx()
, so dass es kein gültiges Prozess-Handle an Sie zurückgibt, und Ihre Schleife ignoriert die Fehler, die WaitForSingleObject()
Ihnen deswegen sagt, so dass Sie endlos enden Schleife.
Versuchen Sie es stattdessen:
%Vor%Wenn Sie Beschreibung von ShellExecuteEx in MSDN lesen, Sie werden das sehen:
hProzess
%Vor%Ein Handle für die neu gestartete Anwendung. Dieses Mitglied ist aktiviert return und ist immer NULL, außer fMask ist auf SEE_MASK_NOCLOSEPROCESS eingestellt. Auch wenn fMask auf gesetzt ist SEE_MASK_NOCLOSEPROCESS, hProcess wird NULL sein, wenn kein Prozess gestartet wurde.
i.e. Sie haben einfach kein gültiges Handle. Sie müssen fMask wie oben beschrieben einstellen.
Tags und Links delphi delphi-2007