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.


Anmelden zum Antworten