ja und wie verwende ich das dann mit folgendem code?
Delphi-Quellcode:
function GetWindowHandleByExeName(const AExeName: string): THandle;
var
SnapShot: THandle;
p: TProcessEntry32;
ProcessHandle: THandle;
begin
Result := 0;
WindowHandle := 0;
ProcessHandle := 0;
p.dwSize := SizeOf(p);
SnapShot := CreateToolhelp32Snapshot(TH32CS_SnapProcess, 0);
try
if Process32First(SnapShot, p) then
repeat
if AnsiLowerCase(AExeName) = AnsiLowerCase(p.szExeFile) then
ProcessHandle := p.th32ProcessID;
until (ProcessHandle <> 0) or not Process32Next(SnapShot, p);
EnumWindows(@MyEnumWindowProc, ProcessHandle);
Result := WindowHandle;
finally
CloseHandle(SnapShot);
end;
end;
Aber wie du ja selbst schon sagst, killt der Taskmanager bei bedarf auch das Programm, wenn ein sanftes Beenden nicht geklappt hat. Und genau das liegt hier ja vor. Selbst der Taskmanager muss Java-Programme killen, weil ein normales wm_close nicht geht.
Daher die Frage, wie kann ich ein Java-Programm sanft beenden?