Hooks und WM_KEYUP



  • Ich habe es hinbekommen, eine Taste global zu registrieren. Mein Problem ist, dass mein Programm immer erst reagieren soll, wenn die Taste losgelassen wird. Wie kann ich das machen?

    Danke im Voraus,

    Manuel. 🙂

    BOOL CMfcTestDlg::OnInitDialog()
    {
    	CDialog::OnInitDialog();
    
    	SetIcon(m_hIcon, TRUE);
    	SetIcon(m_hIcon, FALSE);
    
    	RegisterHotKey(this->m_hWnd, 1, NULL, VK_F9);
    
    	return TRUE;
    }
    
    LRESULT CMfcTestDlg::WindowProc(UINT message, WPARAM wParam, LPARAM lParam)
    {
      switch (message)
      {
        case WM_HOTKEY:
        {
          switch (wParam)
          {
            case 1:
            {
    					MessageBox("Taste F9 gedrückt.");
    					break;
            }
          }
        }
      }	
    	return CDialog::WindowProc(message, wParam, lParam);
    }
    


  • Das wird nicht funktionieren...
    Da müsstest du schon Hooks verwenden...

    Gruß
    :: NoName ::



  • Wenn ich es mit Hooks versuche, stoße ich an folgenden Fehler. Ich hab keine Ahnung, was ich da ändern muss...

    error C2664: 'SetWindowsHookExA': Konvertierung des Parameters 2 von 'LRESULT (int,WPARAM,LPARAM)' in 'HOOKPROC' nicht möglich
    Keine Funktion mit diesem Namen im Gültigkeitsbereich stimmt mit dem Zieltyp überein

    Header:

    public:
    	HHOOK hhook;
    protected:
    	LRESULT CALLBACK LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam);
    

    CPP:

    ///// Globale Tasten abfangen
    	hhook = SetWindowsHookEx(WH_KEYBOARD_LL, LowLevelKeyboardProc, AfxGetInstanceHandle(), 0);
    
    LRESULT CALLBACK CMeinDialog::LowLevelKeyboardProc(int nCode, WPARAM wParam, LPARAM lParam)
    {
    	if (nCode == HC_ACTION)
    	{
    		KBDLLHOOKSTRUCT *pkbdllhook = (KBDLLHOOKSTRUCT *)lParam;
    
    		switch (wParam)
    		{
    			case WM_KEYUP:
    			{
    				switch (pkbdllhook->vkCode)
    				{
    					case VK_F4:
    					{
    							MessageBox("F4 Taste gedrückt.");
    							break;
    					}
    				}
    			}
    		}
    	}
    
    	return (CallNextHookEx(hhook, nCode, wParam, lParam));
    }
    


  • Kann mir da keiner helfen? Ich arbeite das erste Mal mit Hooks. 😕



  • Hier der Code, den ich momentan hab. Ich bekomme mittlerweile keine Fehlermeldung/Warnung mehr, aber trotzdem passiert nichts beim Loslassen der Taste F4...

    http://www.raedelonline.de/diverse/hooks.txt


Anmelden zum Antworten