Hallo,
ich möchte ICQ über mein eigenes, speziell für mich organisiertes, Programm beenden.
Dazu habe ich mit EnumWindows mir alle Fenster auflisten lassen um, da das Programm nur für mich sein soll, das jeweilige Fenster zu wählen um es mit WM_CLOSE zu schließen. Ich dachte das richtige Fenster sei 'ICQNUMMER', dies ist aber nur die Liste meiner Kontakte nicht aber die Anwendung. Ich habe es dann mit dem Fenster 'ICQ Lite' versucht, leider hat dies auch nicht geklappt. Daher ermittle ich nun immer den Prozess von ICQ. Nun könnte ich mit TerminateProcess den Prozess radikal beenden, was aber nicht mein Ziel ist.
Was schlagt ihr vor?
Hier der Code in dem ich den Prozess ermittle und je nach Bedingung den Prozess beenden möchte:
Delphi-Quellcode:
function GetProcess(Process: String; KillProcess: Boolean): Boolean;
var
hProcSnap : THandle;
pe32 : TProcessEntry32;
begin
Result := False;
hProcSnap := CreateToolHelp32SnapShot(TH32CS_SNAPPROCESS, 0);
If hProcSnap <> INVALID_HANDLE_VALUE then
begin
pe32.dwSize := SizeOf(ProcessEntry32);
If Process32First(hProcSnap, pe32) then
While Process32Next(hProcSnap, pe32) do
begin
If Pos(Process, LowerCase(pe32.szExeFile)) <> 0 then
begin
If KillProcess then
begin
???
end
//If KillProcess then Result := TerminateProcess(OpenProcess(Process_Terminate, False, pe32.th32ProcessID), 0)
Else Result := True;
Break;
end;
end;
CloseHandle(hProcSnap);
end;
end;
Gruß
Mazel