Hallo #,
ich habe hier eine Variante von WinExecAndWait32.
Das darin gestartete
Programm1 ruft über ShellExecute (?)
Programm2 auf und beendet sich.
Nach der Beendigung von
Programm1 bekomme ich die Kontrolle von WinExecAndWait32 zurück.
In der Zwischenzeit läuft aber
Programm2 weiter.
Wie bekomme ich es hin, dass ich warte, bis auch
Programm2 beendet ist.
Hier der Code
Delphi-Quellcode:
function Run_EXE(Params: string; var ExitCode: Cardinal;
ShowMinimized: boolean): Boolean;
var //True wenn exe gelaufen, unabhängig vom ExitCode
SI: TStartupInfo;
PI: TProcessInformation;
begin
fillchar(SI, SizeOf(SI), 0);
SI.cb := SizeOf(SI);
SI.dwFlags := STARTF_USESHOWWINDOW;
if ShowMinimized
then SI.wShowWindow := SW_SHOWMINIMIZED
else SI.wShowWindow := SW_SHOWNORMAL;
if CreateProcess(nil, PChar(Params), nil, nil, false,
CREATE_DEFAULT_ERROR_MODE and HIGH_PRIORITY_CLASS, nil, nil, SI, PI) then
begin //backup läuft
while (waitForSingleObject(PI.hProcess, 0) = WAIT_TIMEOUT) do
Application.ProcessMessages;
GetExitCodeProcess(PI.hProcess, ExitCode);
CloseHandle(PI.hThread);
CloseHandle(PI.hProcess);
Result := True;
end //backup läuft
else
begin //CreateProcess fehlgeschlagen
// error message
Result := False;
end;
end;
Danke
Heiko