Einzelnen Beitrag anzeigen

Benutzerbild von himitsu
himitsu

Registriert seit: 11. Okt 2003
Ort: Elbflorenz
44.184 Beiträge
 
Delphi 12 Athens
 
#8

AW: Prüfen ob ein Prozess (noch) existiert

  Alt 22. Okt 2021, 10:33
Wie gesagt, einfach das Handle merken und nicht sofort nach dem CreateProcess freigeben.

Mit diesem Handle kann man dann jederzeit direkt prüfen, ohne unnötig umständlich zu suchen, ob der Prozess noch arbeitet.
MerkenZumPrüfenMitGetExitCodeProcess := PIf.hProcess; anstatt CloseHandle(PIf.hProcess); (Letzeres dann machen, wenn man ganz fertig mit Prüfen ist)


PS: Falls pif vorher nicht mit 0 initialisiert wurde, dann ist [DELPHI]if PIf.dwProcessId > 0 then[DELPHI] falsch, denn
Zitat:
Return value

If the function succeeds, the return value is nonzero. To get extended error information, call GetLastError.

If the function fails, the return value is 0 (zero).
und es kann sein, dass im Fehlerfall diese Variable garnicht beschrieben wird.

Delphi-Quellcode:
Result := CreateProcessWithLogonW(PWideChar(User), nil, PWideChar(PW), 0, nil, PWideChar(ws), CREATE_DEFAULT_ERROR_MODE, nil, PWideChar(param), @si, @pif);
if Result <> 0 then
Das Sleep sollte auch unnötig sein. (die Daten in diesem Record werden sich in der Zwischenzeit garantiert nicht ändern)
$2B or not $2B

Geändert von himitsu (22. Okt 2021 um 10:41 Uhr)
  Mit Zitat antworten Zitat