Wenn der Name des Fensters bekannt ist:
Delphi-Quellcode:
var Window : hWnd;
Window := FindWindow(nil, 'Name des Fensters');
if Window <> 0 then PostMessage(Window, wm_close, 1, 1);
Funktioniert aber nicht, wenn das Programm z.B. eine Abfrage beim Beenden anzeigt
Wenn der Dateiname des Programms bekannt ist:
Delphi-Quellcode:
uses TlHelp32;
// Funktion
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
if not (KillTask('NameDesProgramms.exe') then
{z.B.} showmessage('Programm konnte nicht beendet werden.');
Die harte Methode
, von
dsdt.info