Laufende Anwendung beenden
CreateToolHelp32Snapshot, TerminateProcess
--------------------------------------------------------------------------------
Die Funktion beendet den Prozess, der mit übergebenen Exenamen übereinstimmt. Sollten mehrere Prozesse des selben Exenamens laufen, so wird der zuerst Gefundene geschlossen.
Wenn der Prozess erfolgreich beendet wurde, wird true zurückgegeben.
Delphi-Quellcode:
uses TLHelp32;
function KillTask(const AExeName: string): boolean;
var
p: TProcessEntry32;
h: THandle;
begin
Result := false;
p.dwSize := SizeOf(p);
h := CreateToolHelp32Snapshot(TH32CS_SnapProcess, 0);
try
if Process32First(h, p) then
repeat
if AnsiLowerCase(p.szExeFile) = AnsiLowerCase(AExeName) then
Result := TerminateProcess(OpenProcess(Process_Terminate,
false,
p.th32ProcessID),
0);
until (not Process32Next(h, p)) or Result;
finally
CloseHandle(h);
end;
end;
//Aufruf
procedure TForm1.Button2Click(Sender: TObject);
begin
if not KillTask('Project2.exe') then
Showmessage('Prozess konnte nicht beendet werden.');
end;
Bei diesem Code wird der Prozess ohne Rückfrage beendet. Dadurch kann es ggf. zu Datenverlusten kommen.
[edit=Sharky]Delphi-Tags gesetzt. Mfg, Sharky[/edit]