@Luckie AND Olli, darf ich Eure Zweisamkeit unterberchen ?
@MiniKeks
In Bezug auf
http://www.swissdelphicenter.ch/de/showcode.php?id=593 brauchst Du doch nur die beiden Methoden zusammenführen (Siehe Beispiel).
Im Beispiel sollte man noch auf die Gross- und Kleinschreibung eingehen.
Delphi-Quellcode:
function TerminateTheProcess(const ExeFilename: String): Boolean;
var
...
begin
aSnapshotHandle := CreateToolhelp32Snapshot(TH32CS_SNAPPROCESS, 0);
aProcessEntry32.dwSize := SizeOf(aProcessEntry32);
bContinue := Process32First(aSnapshotHandle, aProcessEntry32);
while Integer(bContinue) <> 0 do // Suche solang bContinue true
begin
if ExtractFileName(aProcessEntry32.szExeFile) = ExeFilename then
begin
if MessageDlg('Do you want to Terminate...' ... then
begin
PrID := aProcessEntry32.th32ProcessID;
Ph := OpenProcess(1, BOOL(0), PrID);
Ret := TerminateProcess(Ph, 0);
if Integer(Ret) = 0 then
begin
MessageDlg('Cannot terminate...', mtInformation, [mbOK], 0);
Result := False;
end else
begin
bContinue := False;
Result := True;
{ könnte man auch so machen ist aber nicht "sauber"
CloseHandle(aSnapshotHandle);
Result := True;
exit;
}
end;
end;
end;
bContinue := Process32Next(aSnapshotHandle, aProcessEntry32); // weitersuchen
end;
CloseHandle(aSnapshotHandle);
end;