2009-07-27 62 views
0

我在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 */ 

回答

2

這是可能的特定組合被系統的保護。 Windows有這個功能,你可以設置它,這樣它會要求你按Crtl + Alt + Del鍵,然後才能輸入你的用戶名和密碼登錄。我記得在某處閱讀這個功能是爲了確保它是一個真正的人輸入憑證而不是一個惡意程序。

+0

當通過Dragon NaturallySpeaking高級腳本代碼發送時,相同的`Win + L`組合鍵具有相同的問題 - 它不起作用,但使用除L之外的其他鍵的命令也可以。你的理論認爲它受操作系統保護似乎對我有效。 – kevinmicke 2014-02-27 19:27:25