systemweiter Hook-- nur lokale events kommen an



  • Hallo ,

    ich habe das Problem, dass ich keinen systemweiten Hook hinbekomme.
    Ich habe ein Projekt(v. Codeproject.com) der mit systemweiten MousEHooks arbeitet
    als Vorlage genommen.

    DLL_EXPORT void SetMouseHook(void)
    {
    	if (!bHooked)
    	{
    		//hhook		= SetWindowsHookEx(WH_MOUSE, (HOOKPROC)MouseProc, hInst, (DWORD)NULL);  
    		hhook		= SetWindowsHookEx(WH_CALLWNDPROC, (HOOKPROC)CallWndProc, hInst, (DWORD)NULL); 
    		bHooked		= true;	
    	}
    }
    

    Die alte Funktion ist ausgeklammert , und durch die neuere ersetzt worden
    Dazu habe ich eigentlich nur den Rumpf der neuen HookProc eingefügt

    LRESULT CALLBACK CallWndProc(int nCode, WPARAM wParam, LPARAM lParam) 
    {
        //return CallNextHookEx(hhook, nCode, wParam, lParam);
    	if (nCode != HC_ACTION) 
    	{
    		return CallNextHookEx(hhook, nCode, wParam, lParam);
    	}
    	return 1;
    }
    

    Aber bereits ein Breakpoint auf dem if-statement verrät, dass dort nur lokale
    Events ankommen, keine systemweiten. Laut MSDN ist SetWindowsHookEx(..) mit den richtigen Parametern gefüllt , also HInst ist die der DLL..
    Etwas merkwürdig finde es ja nur deshalb, weil die vorgefertigte HookProc funktioniert, meine nicht!

    Was könnte die Ursache dafür sein?


Anmelden zum Antworten