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.


  • Mod

    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.


  • Mod

    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!


Anmelden zum Antworten