日期:2014-05-18 浏览次数:21209 次
[DllImport("user32")]
        public static extern void keybd_event(
                     byte bVk,
                     byte bScan,
                     uint dwFlags,
                     uint dwExtraInfo
                                              );//模拟键盘消息
byte VK_CONTROL=17;
byte VK_C=67;
//下面四句话就是CTRL+C
keybd_event(VK_CONTROL, 0, 0, 0);
                        keybd_event(VK_C, 0, 0, 0);
                        keybd_event(VK_C, 0, 0x2, 0);
                        keybd_event(VK_CONTROL, 0, 0x2, 0);
------解决方案--------------------
楼主表达能力有问题
你问的是“模拟Ctrl”,也就是发送击键,那么7楼已经给你解决了
但是听你表达,你好象是想“拦截Ctrl”,也就是如果按下Ctrl,收到一个通知,而不是主动去触发一个Ctrl键
哎。。。。
------解决方案--------------------
   if (KeyDownEvent != null && (wParam == WM_KEYDOWN || wParam == WM_SYSKEYDOWN))  
       {  
           Keys keyData = (Keys)MyKeyboardHookStruct.vkCode;  
           KeyEventArgs e = new KeyEventArgs(keyData);  
           KeyDownEvent(this, e);  
       }  
这段代码执行没有?如果执行了,直接从vkCode来判断Control是否按下
------解决方案--------------------
是不是被PreviewKeyDown吞掉了
------解决方案--------------------
是不是被PreviewKeyDown吞掉了