日期:2014-05-17  浏览次数:20866 次

c# 键盘钩子的问题
 int KbHookProc(int nCode, IntPtr wParam, IntPtr lParam)
        {
            if (nCode >= 0 && wParam == (IntPtr)0x100)
            {
                int vkCode = Marshal.ReadInt32(lParam);
                if (vkCode == 160) //Shift键值
                {
                          press((byte)Keys.NumPad7); 
                          return 1; 
                  }
            }

            return CallNextHookEx(hHook, nCode, wParam, lParam);
        }

       public void press(byte vk)
        {
            keybd_event(vk, 0, 0, 0);
            keybd_event(vk, 0, 0x0002, 0);
        }
为什么我按一下Shift键会打出20多个7来?而换成改别的普通的键都没问题

------解决方案--------------------

//不是你自己写的么,当按下的建值为
 if (vkCode == 160) //Shift键值
{
     press((byte)Keys.NumPad7); //按7
     return 1; 
}
------解决方案--------------------
引用:

//不是你自己写的么,当按下的建值为
 if (vkCode == 160) //Shift键值
{
     press((byte)Keys.NumPad7); //按7
     return 1; 
}
同上