为什么我的一些键盘事件起作用而其他键盘事件不起作用?

问题描述:

我在C++中有以下例子,第一个按预期工作,第二个没有。我还注意到Windows系统键盘也有同样的问题。任何人都知道为什么或解决方法/更好的方式来做到这一点?为什么我的一些键盘事件起作用而其他键盘事件不起作用?

keybd_event(VK_LWIN,0x5b,0 , 0); /* Windows Key Press */ 
keybd_event(VkKeyScan('l'), 0, 0, 0); /* L key Press */ 
keybd_event(VkKeyScan('l'), 0, KEYEVENTF_KEYUP,0); /* L key Release */ 
keybd_event(VK_LWIN,0x5b,KEYEVENTF_KEYUP,0); /* Windows Key Release */ 

这一次失败:

keybd_event(VK_CONTROL,0x11,0 , 0); /* Control Key Press */ 
keybd_event(VK_MENU,0xb8, 0, 0); /* Alt Press */ 
keybd_event(VK_DELETE,0x2e, 0, 0); /* Del Press */ 

keybd_event(VK_DELETE,0x2e, KEYEVENTF_KEYUP,0); /* Del Release */ 
keybd_event(VK_MENU,0xb8, KEYEVENTF_KEYUP,0); /* Alt Release */ 
keybd_event(VK_CONTROL,0x11,KEYEVENTF_KEYUP,0); /* Control Key Release */ 

这是可能的特定组合被系统的保护。 Windows有这个功能,你可以设置它,这样它会要求你按Crtl + Alt + Del键,然后才能输入你的用户名和密码登录。我记得在某处阅读这个功能是为了确保它是一个真正的人输入凭证而不是一个恶意程序。

+0

当通过Dragon NaturallySpeaking高级脚本代码发送时,相同的`Win + L`组合键具有相同的问题 - 它不起作用,但使用除L之外的其他键的命令也可以。你的理论认为它受操作系统保护似乎对我有效。 – kevinmicke 2014-02-27 19:27:25