C # Клавиатурные хуки, события key up - PullRequest
1 голос
/ 24 января 2012

У меня есть функция C #, которую я пытаюсь выяснить, вот код:

private int KbHookProc(int nCode, IntPtr wParam, IntPtr lParam)
    {
        if (nCode >= 0 && wParam == (IntPtr)WM_KEYDOWN)
        {
            var hookStruct = (KbLLHookStruct)Marshal.PtrToStructure(lParam, typeof(KbLLHookStruct));

            bool ctrlDown = GetKeyState(0xA2) != 0 || GetKeyState(0xA3) != 0;

            if (hookStruct.vkCode == 0x56 && hookStruct.KF_REPEAT == 0)
            {
                Clipboard.SetText(" ");
                MessageBox.Show("Hit ?);
            }                
        }

        if (nCode >= 0 && wParam == (IntPtr)WM_KEYUP)
        {
                MessageBox.Show("Message : KEY UP");
        }

        // Pass to other keyboard handlers. Makes the Ctrl+V pass through.
        return CallNextHookEx(_hookHandle, nCode, wParam, lParam);        
    }

, так что я ищу здесь, чтобы выяснить, как вызвать событие, когдаКнопка L_CTRL + V нажата.Это работает;однако я хочу, чтобы событие срабатывало только после того, как ключи подняты, и для этого я потерян.Кто-нибудь может предложить какое-либо направление?

1 Ответ

0 голосов
/ 24 января 2012

Я хочу, чтобы событие срабатывало только после того, как ключи подняты, и за это я потерялся.Кто-нибудь может предложить какое-либо направление?

Если вы хотите отвечать только после отпускания клавиш, то отвечайте только на сообщение WM_KEYUP .

Удалитьчасть вашего оператора if, которая обрабатывает сообщение WM_KEYDOWN.

...