Einzelnen Beitrag anzeigen

hoika

Registriert seit: 5. Jul 2006
Ort: Magdeburg
8.275 Beiträge
 
Delphi 10.4 Sydney
 
#1

WinExecAndWait32 wartet nicht

  Alt 18. Aug 2010, 14:09
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
Heiko
  Mit Zitat antworten Zitat