Ich habe hier mal eine Funktion implementiert, die überprüft, ob ein Prozess beendet wurde:
Delphi-Quellcode:
function TKillProcess.HasProcessTerminated: Boolean;
var
ProcessHandle: Cardinal;
ProcessExitCode: DWORD;
const
PROCESS_QUERY_LIMITED_INFORMATION = $1000;
begin
Result := False;
ProcessHandle := OpenProcess(PROCESS_QUERY_INFORMATION or PROCESS_QUERY_LIMITED_INFORMATION, False, FProcessID);
if ProcessHandle <> 0 then
begin
if GetExitCodeProcess(ProcessHandle, ProcessExitCode) then
begin
case ProcessExitCode of
STILL_ACTIVE: Result := False;
else
Result := True;
end;
end
else
begin
RaiseLastOSError;
end;
CloseHandle(ProcessHandle);
end
else
begin
RaiseLastOSError;
end;
end;
Funktioniert das so zuverlässig oder hab eich da was übersehen?