![]() |
Warten, bis aufgerufener Prozess beendet ist
Hallo!
Wie kann man aus einer Delphi-Anwendung ein anderes Programm starten und dann die Delphianwendung solange warten lassen, bis das gestartete Programm beendet ist? (Hintergrund ist, dass ich aus der Anwendung heraus mit einem anderen Programm ein paar Daten von einem entfernten Server abgreife, und warten will, bis dieses Programm damit fertig ist. Je nach Verbindung kann die Programmlaufzeit dabei stark schwanken.) Mit ShellExecute bzw. CreateProcess habe ich es schon versucht, jedoch liefern beide Funktionen nicht das gewünschte Ergebnis. :( MfG Binärbaum |
Re: Warten, bis aufgerufener Prozess beendet ist
WaitForSingleObject()
|
Re: Warten, bis aufgerufener Prozess beendet ist
Zitat:
(Notiz an mich: ![]() Allerdings glaube ich mich zu erinnern, dass es auch eine entsprechende Funktion für den Aufruf eines Prozesses gibt, die dann auch direkt wartet, bis der aufgerufene Prozess abgearbeitet ist, jedoch ist mir der Name entfallen. Weiß jemand, wie diese Funktion heißt? |
Re: Warten, bis aufgerufener Prozess beendet ist
Zitat:
Delphi-Quellcode:
Ruft das programm mittels ShellExecute(Ex) auf und wartet mittels WaitForSingleObject auf dessen Ende.procedure ShellExecAndWait(dateiname: string; Parameter: string); var executeInfo: TShellExecuteInfo; dw: DWORD; begin FillChar(executeInfo, SizeOf(executeInfo), 0); with executeInfo do begin cbSize := SizeOf(executeInfo); fMask := SEE_MASK_NOCLOSEPROCESS or SEE_MASK_FLAG_DDEWAIT; Wnd := GetActiveWindow(); executeInfo.lpVerb := 'open'; executeInfo.lpParameters := PChar(Parameter); lpFile := PChar(dateiname); nShow := SW_SHOWNORMAL; end; if ShellExecuteEx(@executeInfo) then dw := executeInfo.HProcess else begin ShowMessage('Fehler: ' + SysErrorMessage(GetLastError)); Exit; end; while WaitForSingleObject(executeInfo.hProcess, 50) <> WAIT_OBJECT_0 do Application.ProcessMessages; CloseHandle(dw); end; muss allerdings gestehen, dass ich nicht mehr weiß, wo ich das herhabe |
Re: Warten, bis aufgerufener Prozess beendet ist
Zitat:
Mittlerweile habe ich das Problem jedoch so gelöst, dass ich statt dem externen Programm mit Hilfe der Indy-Componenten die Daten vom Server hole. So "weiß" meine Anwendung dann auch ohne Zugriff auf die WinAPI, wann die Daten da sind und das anfängliche Problem stellt sich nun gar nicht mehr. Trotzdem nochmal danke an euch beide. :) MfG Binärbaum |
Alle Zeitangaben in WEZ +1. Es ist jetzt 13:58 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz