Hook auf rechte Maustaste setzen und Nachricht zerstören
-
Hi,
ich will verhindern dass ein bestimmtes Fenster mitbekommt dass es mit rechts angeklickt wurde.
Es gibt im Forum zwar viele Beiträge zu Hooks aber in keinem steht wie man die Nachricht dem Fenster 'wegnehmen' kann.
Ich habe es mit PeekMessage() und GetMessage() versucht, dabei hängt sich das Programm aber leider auf.LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam) { if( wParam == WM_RBUTTONUP ) { MOUSEHOOKSTRUCT* mhs = (MOUSEHOOKSTRUCT*)lParam; MSG msg; GetMessage( &msg, // message information NULL, // handle to window WM_MOUSEFIRST, // first message WM_MOUSELAST // last message // PM_REMOVE // removal options ); } return 0; }
Ich weiß der Code ist noch falsch, aber ich will jetzt einfach mal nur die Rechte Maustaste unschädlich machen.
Wie geht das?
-
Normalerweise springst du ja mit
return CallWindowProc ((WNDPROC) PrevWndProcEdit, hwnd, message, wParam, lParam);
aus deiner Hook-Funktion. Wenn du sie stattdessen
return 0;
verlässt wird afaik die Nachricht nicht mehr an das Fenster weitergereicht
-
Danke @flenders, Du hast zwar den selben Fehler gemacht wie ich aber es hat mir trotzdem geholfen.
Man darf aus der Hook-Funktion ganz einfach nicht 0 zurückgeben, sondern zB 1. Dann wird die Nachricht gestoppt.
-
Hier stand das eben so
-
flenders schrieb:
Hier stand das eben so
Da steht was über subclassing, nicht aber etwas über Hooks.
-
Uops - hab da wohl was verwechselt
-
CallNextHookEx aufrufen um die Msg weiterzuleiten,1 zurückgegen um abzufangen.