2009-07-27 14 views
0

Ich habe die folgenden Beispiele in C++, das erste funktioniert wie erwartet das zweite nicht. Ich merke auch, dass die Windows-Systemtastatur das gleiche Problem hat. Jeder weiß warum oder eine bessere Lösung dafür?Warum funktionieren einige meiner Tastaturereignisse und andere nicht?

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

Dieses versagt:

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

Antwort

2

Es ist wahrscheinlich, dass diese bestimmte Kombination durch das System geschützt ist. Windows verfügt über diese Funktion, wo Sie festlegen können, dass Sie Crtl + Alt + Entf drücken, bevor Sie Ihren Benutzernamen und Ihr Passwort eingeben können. Ich erinnere mich, irgendwo gelesen zu haben, dass diese Funktion sicherstellen soll, dass eine echte Person die Zugangsdaten eingibt und kein bösartiges Programm.

+0

Die gleiche 'Win + L' Tastenkombination, wenn sie über Dragon NaturallySpeaking Advanced Scripting Code gesendet wird, hat das gleiche Problem - es funktioniert nicht, aber Befehle mit anderen Schlüsseln als L. Ihre Theorie, dass sie durch das Betriebssystem geschützt ist, scheint mir zu gelten. – kevinmicke

Verwandte Themen