1

私は理解しようとしている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 ボタンが押されたときにイベントを発生させる方法を理解することです。それは働いています。ただし、キーが上がった後にのみイベントを発生させたいので、迷子になります。誰でも方向性を提供できますか?

4

1 に答える 1

0

キーが上がった後にのみイベントを発生させたいのですが、そのために私は迷っています。誰でも方向性を提供できますか?

WM_KEYUPキーが離されたときにのみ応答する場合は、メッセージにのみ応答します。

ifメッセージを処理するステートメントの部分を削除しWM_KEYDOWNます。

于 2012-01-24T18:38:27.317 に答える