Zitat von
Luckie:
Wenn du den Prozess mit
terminateProcess beendest, dann fragt das Programm unter Garantie nicht mehr nach, weil es das gar nicht. Nach einem Genickschuss, sagst du nämlich auch nichts mehr.
Ich ich da nun seit gut 2 Stunden dran und nahe einer Explosion
Delphi-Quellcode:
procedure KillProcess(hWindowHandle: HWND);
var
hprocessID: INTEGER;
processHandle: THandle;
DWResult: DWORD;
begin
SendMessageTimeout(hWindowHandle, WM_CLOSE, 0, 0,
SMTO_ABORTIFHUNG
or SMTO_NORMAL, 5000, DWResult);
if isWindow(hWindowHandle)
then
begin
{ Get the process identifier for the window}
GetWindowThreadProcessID(hWindowHandle, @hprocessID);
if hprocessID <> 0
then
begin
{ Get the process handle }
processHandle := OpenProcess(PROCESS_TERMINATE
or PROCESS_QUERY_INFORMATION,
False, hprocessID);
if processHandle <> 0
then
begin
{ Terminate the process }
TerminateProcess(processHandle, 0);
CloseHandle(ProcessHandle);
end;
end;
end;
end;
Diese Funktion greift auf TerminateProcess zurück, right?
Und das Programm antwortet mit... "Möchten Sie das Programm wirklich schließen?"...