Sleep 200 '延時200毫秒
keybd_event(112, 0, KEYEVENTF_KEYUP, 0) '模擬彈起F1鍵
----------------------------------------------------------------------------------------
模擬鍵盤或鼠標的響應
我們壹般使用:
UINT SendInput(
UINT nInputs, // count of input events
?PINPUT pInputs, // array of input events
int cbSize // size of structure
);
API函數。第壹個參數是說明第二個參數的矩陣的維數的,第二個參數包含了響應事件,這個自己填充就可以,最後
是這個結構的大小,非常簡單,這是最簡單的方法模擬鍵盤鼠標了,呵呵。註意,這個函數還有個替代函數:
VOID keybd_event(
BYTE bVk, // 虛擬鍵碼
BYTE bScan, // 掃描碼
DWORD dwFlags,
ULONG_PTR dwExtraInfo // 附加鍵狀態
);
與
VOID mouse_event(
DWORD dwFlags, // motion and click options
DWORD dx, // horizontal position or change
DWORD dy, // vertical position or change
DWORD dwData, // wheel movement
ULONG_PTR dwExtraInfo // application-defined information
);
這兩個函數非常簡單了,我想那些按鍵精靈就是用的這個吧。上面的是模擬鍵盤,下面的是模擬鼠標的。這個僅僅是
模擬部分,要和遊戲聯系起來我們還需要找到遊戲的窗口才行,或者包含快捷鍵,就象按鍵精靈的那個激活鍵壹樣,我們
可以用GetWindow函數來枚舉窗口,也可以用Findwindow函數來查找制定的窗口(註意,還有壹個FindWindowEx),
FindwindowEx可以找到窗口的子窗口,比如按鈕,等什麽東西。當遊戲切換場景的時候我們可以用FindWindowEx來確定壹
些當前窗口的特征,從而判斷是否還在這個場景,方法很多了,比如可以GetWindowInfo來確定壹些東西,比如當查找不
到某個按鈕的時候就說明遊戲場景已經切換了,等等辦法。有的遊戲沒有控件在裏面,這是對圖像做坐標變換的話,這種
方法就要受到限制了。這就需要我們用別的辦法來輔助分析了。
附:常用模擬鍵的鍵值對照表。
鍵盤鍵與虛擬鍵碼對照表
字母和數字鍵 數字小鍵盤的鍵 功能鍵 其它鍵
鍵 鍵碼 鍵 鍵碼 鍵 鍵碼 鍵 鍵碼
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 -- -- Home 36
O 79 . 110 -- -- Left Arrow 37
P 80 / 111 -- -- Up Arrow 38
Q 81 -- -- -- -- Right Arrow 39
R 82 -- -- -- -- Down Arrow 40
S 83 -- -- -- -- Insert 45
T 84 -- -- -- -- Delete 46
U 85 -- -- -- -- Help 47
V 86 -- -- -- -- Num Lock 144
W 87
X 88
Y 89
Z 90
0 48
1 49
2 50
3 51
4 52
5 53
6 54
7 55
8 56
9 57