![]() |
ICQ über eigenes Programm beenden
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:
Gruß
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; Mazel |
Re: ICQ über eigenes Programm beenden
*push*
|
Re: ICQ über eigenes Programm beenden
hast du es schon mit wm_syscommand anstelle von wm_close probiert?
|
Re: ICQ über eigenes Programm beenden
Hallo,
nein, hab ich vorher noch nicht probiert aber eben und leider hat auch dies nicht geklappt, obwohl ich sicher bin das richtige Fenster zum Prozess 'ICQ Lite' sein müsste, weil nur dieses oder das mit der ICQ NUMMER exisitert und das mit der Nummer nur die Liste ist. |
Re: ICQ über eigenes Programm beenden
hast du dir schonmal per WinSpy das Handle des Fensters (mit der ICQ-Nummer) geholt und dann die Message dort hinn geschickt? (sozusagen sicher gestellt das du auch das richtige Handle hast).
Und lässt sich das ICQ-Fenster über Alt+F4 beenden? wenn dem so ist müsste es auch per message funktionieren. |
Re: ICQ über eigenes Programm beenden
Was ist WinSpy? Das kenn ich leider nicht.
Ich bin sicher, dass ich das richtige Handle des Fenster mit der ICQ-Nummer habe, denn dies funktioniert. Wenn die Liste im Vordergrund ist und ich WM_CLOSE sende an dieses Fenster sende, wird es geschlossen das funktoniert auch mit ALT + F4. Deshalb denke ich das es das Fenster 'ICQ Lite' sein müsste aber da passiert eben nichts. Gibt es denn noch eine andere Möglickeit ICQ sanft zu beenden? |
Re: ICQ über eigenes Programm beenden
Hy,
Ich habe versucht diesen Code mal in mein Projekt mit einzubauen. Leider fehlt mir offensichtlihc noch eine uses direktive um alles zum laufen zu bekommen. TProcessEntry32 sowie CreateToolHelp32SnapShot werden als undefinierte Bezeichner angekreidet. Was muss ich denn noch für Systembibliotheken einbinden? Danke schonmal und schöne Grüße Andi |
Re: ICQ über eigenes Programm beenden
OH >
![]() aber in soeinem Fall, wo die OH es mal nicht kennt... Google > ![]() DP > ![]() oder ganz einfach Suchen [Strg+F] (natürlich in Delphi) > In Dateien suchen > in Verzeichnissen inkl. Unterverzeichnisse und da das Delphi-Source-Vereichnis (z.B. C:\Programme\Borland\Delphi7\Source ) = TlHelp32 |
Re: ICQ über eigenes Programm beenden
Hi,
Es gibt noch einen anderen Weg. Einen, den ich meistens benutze:
Delphi-Quellcode:
Gruß
var id: Cardinal;
wnd, h: THandle; begin wnd := FindWindow(*ICQ*); GetWindowThreadProcessID(wnd,id); h := OpenProcess(PROCESS_ALL_ACCESS,false,id); TerminateProcess(h); end; Neutral General |
Re: ICQ über eigenes Programm beenden
Hy Danke für die schnelle Hilfe.
Der Process den ich beenden möchte hat kein Window daher habe ich die oben vorgestellte Funktion benutzt. Zitat:
Zitat:
Zitat:
C:\Program Files\CodeGear\RAD Studio\5.0\source\Win32 Diese Art der Suche bringt mich nun hoffentlich immer schneller ans Ziel wenn ich mal wieder nicht weiss was ich für Bibliotheken benutze bei meinem Copy Paste Code :-D DANKE !!! @himitsu: du bist ja auch 10mal schneller als google ;-) |
Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz