Mausklicks außerhalb des Anwendungsbereiches



  • Wie kann ich prüfen, ob der User außerhalb meines eigenen Fensters mit der Maus geklickt hat. Mein Fenster hat also nicht den Eingabefokus und es wird auch nicht auf meinen Anwendungsbereich geclickt; weshalb ich ja auch nicht WM_LBUTTONDOWN benutzen kann...

    [ Dieser Beitrag wurde am 30.11.2002 um 12:34 Uhr von JMD-Software editiert. ]



  • hook -> suchfunktion damit füttern, gibt schon ne menge zu dem thema hier 😉



  • Okay: danke erst mal für die Antwort. Habe das gestern mit Hilfe der MSDN zwar noch versucht; aber nicht wirklich hinbekommen.

    Ich habe es wahrscheinlich nicht richtig verstanden.

    Zuerst habe ich den Prototyp einer 'MouseProc' deklariert sowie einen entsprechenden Hook:

    LRESULT CALLBACK MouseProc(int, WPARAM, LPARAM);
    HHOOK MouseHook;
    

    Danach initialisiere ich als Reaktion auf die WM_CREATE den Hook:

    MouseHook = SetWindowsHookEx(WH_MOUSE, MouseProc, NULL, 0);
    

    Als Betriebssystem verwende ich Win2000; laut MSDN sollte hier auch WH_MOUSE_LL möglich sein... ist es aber nicht: der Compiler kennt es nicht, obwohl es ja in der entsprechenden Header-Datei deklariert ist... 😕

    Irgendwann folgt dann die Umsetzung der MouseProc:

    LRESULT CALLBACK MouseProc(int nCode, WPARAM wParam, LPARAM lParam)
    {
        if(nCode < 0)
            return CallNextHookEx(MouseHook, nCode, wParam, lParam);
    
        if(nCode == HC_ACTION)
        {
            if(wParam == WM_LBUTTONDOWN)
            {
                MouseClicks++;
            }
        }
    
        return CallNextHookEx(MouseHook, nCode, wParam, lParam);
    };
    

    Und zu guter Letzt als Reaktion auf die WM_DESTROY:

    UnhookWindowsHookEx(MouseHook);
    

    Tja, das ganze wird fehlerfrei compiliert, aber leider wird meine MouseProc NIE aufgerufen... ich habe wahrscheinlich irgend etwas falsch verstanden 🙂



  • 😡 😡
    DU musst das alles aber in eine DLL packen!!

    steht doch in der FAQ 😉 😉 😉 😮



  • *hust* 🙂


Anmelden zum Antworten