SetWindowsHookEx WM_SETTTEXT abfangen?
-
Nabend,
bin gerade dabei die Nachricht WM_SETTTEXT abzufangen, habe irgendwo gelesen dass dies nicht über WH_GETMESSAGE nicht möglich ist - Habe es direkt auch ausprobiert und es funktioniert nicht. WM_QUIT wird wunderbar abgefangen.
Für den Hook nutze ich "WH_GETMESSAGE". Kann mir hierbei jemand weiterhelfen?
bye
-
Das wäre hier was für die specis.....Diese Frage wurde oft gestellt und konnte immer nie 100% beantwortet werden..

-
Juhuuuu, ich habs gelöst, der Thread kann deleted werden
P.S. Google is nun mein bester Freund xD
-
JayJay schrieb:
Juhuuuu, ich habs gelöst, der Thread kann deleted werden
P.S. Google is nun mein bester Freund xD
Fake

-
JayJay schrieb:
Juhuuuu, ich habs gelöst, der Thread kann deleted werden
P.S. Google is nun mein bester Freund xD
Und wie ?
-
Hi, ist wirklich ein Fake! Problem besteht noch immer!
-
Also WH_GETMESSAGE fängt nur Nachrichten ab, die mit PostMessage verschickt werden.
WM_SETTEXT wird oft mit SendMessage geschickt und wird daher nicht abgefangen. Es sollte mit WH_CALLWNDPROC möglich sein. Dennoch bekomm ich keine Nachricht.Ich habe danach mal die kompletten WH_GETMESSAGE & WH_CALLWNDPROC geloggt und alle in einer seperaten Datei gespeichert.
D.h. ich erhalte Nachrichte von WH_CALLWNDPROC & WH_GETMESSAGE. Somit schließe ich darauf, dass ich den Hook erfolgreich injiziert habe.
Ich schicke zudem eine WM_SETTEXT Nachricht an das entsprechende Fenster, sodass eine WM_SETTEXT Nachricht in jedem Falle ankommen muss. - Das Fenster reagiert auch drauf - daher muss das irgendwie Möglich sein, diese Nachricht im Hook abzufangen.Ich werde also weiterarbeiten und hier alle aktuellen Ergebnisse posten.
Hier noch ein wenig Code:
LRESULT CALLBACK fnMyWndProc(int nCode, WPARAM wParam, LPARAM lParam) { MSG *pmsg=(MSG*)lParam; if( pmsdg->message == WM_SETTEXT ) { MessageBox( 0, "WM_TEXT", "", MB_OK ); } return (CallNextHookEx (g_hMyHook2,nCode,wParam,lParam)); }
-
WM_PAIN(15) und WM_COMMAND(273) via. GETMESSAGE kann ich mittlerweise auch abfangen.
-
Und warum verwendest Du einen Hook wenn es ein Subclass auch tut. Diese Art von Hook trift jedes Fenster und ist sehr schlecht für die Performance!
-
1. Es trifft genau das Fenster, das ich will - dennoch kannst du gerne mir erläutern was du meinst.
Ich versuche aus einer RichEditbox (klasse "afx:4000000:20xx" KEINE "RichEdit2" Klasse) den Inhalt auszulesen - Das Problem ist, dass das Fenster auf keine Nachricht antwortet.
-
GetWindowText geht immer bei Edit und RichEditCtrls. Deswegen braucht man sicherlich keinen Hook!
Wenn es um den RTF Inhalt geht musst Du EM_STREAMOUT verwenden!