Windows提供了一個模擬鍵盤API函數Keybd_event(),使用該函數可以相應的屏蔽鍵盤的動作。Keybd_event()函數能觸發一個按鍵事件,也就是說會產生一個WM_KEYDOWN或WM_KEYUP消息。
該函數原型如下:
VOID keybd_event(
BYTE bVk, // virtual-key code
BYTE bScan, // hardware scan code
DWORD dwFlags, // flags specifying various function options
DWORD dwExtraInfo // additional data associated with keystroke
);
從原型可以看出,Keybd_event()共有四個參數:
第一個為按鍵的虛擬鍵值,如回車鍵為vk_return, tab鍵為vk_tab(其他具體的參見附錄:常用模擬鍵的鍵值對照表);
第二個參數為掃描碼,一般不用設置,用0代替就行;
第三個參數為選項標志,如果為keydown則置0即可,如果為keyup則設成"KEYEVENTF_KEYUP";
第四個參數一般也是置0即可。
例子1:模擬按下'A'鍵
keybd_event(65,0,0,0);
keybd_event(65,0,KEYEVENTF_KEYUP,0);
例子2:模擬按下'ALT+F4'鍵
keybd_event(18,0,0,0);
keybd_event(115,0,0,0);
keybd_event(115,0,KEYEVENTF_KEYUP,0);
keybd_event(18,0,KEYEVENTF_KEYUP,0);
附:常用模擬鍵的鍵值對照表(也可參考http://msdn.microsoft.com/en-us/library/dd375731(v=vs.85).aspx)
鍵盤鍵與虛擬鍵碼對照表
字母和數字鍵 數字小鍵盤的鍵 功能鍵 其它鍵
鍵 鍵碼 鍵 鍵碼 鍵 鍵碼 鍵 鍵碼
A 65 0 96 F1 112 Backspace 8
B 66 1 97 F2 113 Tab 9
C 67 2 98 F3 114 Clear 12
D 68 3 99 F4 115 Enter 13
E 69 4 100 F5 116 Shift 16
F 70 5 101 F6 117 Control 17
G 71 6 102 F7 118 Alt 18
H 72 7 103 F8 119 Caps Lock 20
I 73 8 104 F9 120 Esc 27
J 74 9 105 F10 121 Spacebar 32
K 75 * 106 F11 122 Page Up 33
L 76 + 107 F12 123 Page Down 34
M 77 Enter 108 -- -- End 35
N 78 - 109