tab鍵
方法一:消息
postmessage(Application.ActiveFormHandle, wm_keydown, vk_tab, 0);
postmessage(Application.ActiveFormHandle, wm_keyup, vk_tab, 0);
方法二:
keybd_event(VK_TAB, 0, 0, 0);
keybd_event(VK_TAB, 0, 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);
例子3:模擬按下'CTRL+C'鍵
keybd_event(17,0,0,0);
keybd_event(67,0,0,0);
keybd_event(67,0,KEYEVENTF_KEYUP,0);
keybd_event(17,0,KEYEVENTF_KEYUP,0);
示鼠標的雙擊
setcursorpos(20,132);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
鍵盤碼參照
http://blog.sina.com.cn/s/blog_53013a8c01012nwa.html
在Windows大行其道的今天,windows界面程序受到廣大用戶的歡迎。對這些程序的操作不外乎兩種,鍵盤輸入控制和鼠標輸入控制。有時,對於繁雜 的,或重復性的操作,我們能否通過編制程序來代替手工輸入,而用程序來模擬鍵盤及鼠標的輸入呢?答案是肯定的。這主要是通過兩個API函數來實現的。
下面以Delphi為例來介紹一下如何實現這兩個功能。模擬鍵盤我們用Keybd_event這個api函數,模擬鼠標按鍵用mouse_event函數。大家不用擔心,在delphi里調用api函數是很方便的事。
先介紹一下Keybd_event函數。Keybd_event能觸發一個按鍵事件,也 就是說回產生一個WM_KEYDOWN或WM_KEYUP消息。當然也可以用產生這兩個消息來模擬按鍵,但是沒有直接用這個函數方便。 Keybd_event共有四個參數,第一個為按鍵的虛擬鍵值,如回車鍵為vk_return, tab鍵為vk_tab。第二個參數為掃描碼,一般不用 設置,用0代替就行。第三個參數為選項標志,如果為keydown則置0即可,如果為keyup則設成“KEYEVENTF_KEYUP”,第四個參數一 般也是置0即可。用如下代碼即可實現模擬按下i鍵,其中的$49表示i鍵的虛擬鍵值:
keybd_event($49,0,0,0);
keybd_event($49,0,KEYEVENTF_KEYUP,0); ...
mouse_event最好配合setcursorpos(x,y)函數一起使用,與 Keybd_event類似,mouse_event有五個參數,第一個為選項標志,為MOUSEEVENTF_LEFTDOWN時表示左鍵按下,為 MOUSEEVENTF_LEFTUP表示左鍵松開,向系統發送相應消息。第二三個參數分別表示x,y相對位置,一般可設為0,0,第四五個參數並不重 要,一般也可設為0,0。若要得到Keybd_event和mouse_event函數的更詳細的用法,可以查閱msdn或delphi幫助。下面是關於 mouse_event的示例代碼:
setcursorpos(20,132);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTDOWN,0,0,0,0);
mouse_event(MOUSEEVENTF_LEFTUP,0,0,0,0); ...
上面的代碼表示鼠標的雙擊,若要表示單擊,用兩個mouse_event即可(一次放下,一次松開)。
注意,不管是模擬鍵盤還是鼠標事件,都要注意還原,即按完鍵要松開,一個keydown對應一個keyup;鼠標單擊 完也要松開, 不然可能影響程序的功能。
模擬鍵盤輸入首先要用到一個API函數:keybd_event。
我們是菜鳥,所以不必具體去理解它的詳細用法,只要按以下方法使用即可了!呵呵!
模擬按鍵有兩個基本動作,即按下鍵和放開按鍵,所以我們每模擬一次按鍵就要調用兩次該API函數,其方法是:
例子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);
附:常用模擬鍵的鍵值對照表。
鍵盤鍵與虛擬鍵碼對照表
字母和數字鍵 數字小鍵盤的鍵 功能鍵 其它鍵
鍵 鍵碼 鍵 鍵碼 鍵 鍵碼 鍵 鍵碼
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
好了,希望本文能讓你對模擬鍵盤和鼠標按鍵有個初步的了解,如果想更深入的了解其中的奧妙,可以查閱詳實的msdn在線幫助,並多多動手實踐。
附:更詳細的鍵值表:
常數名稱 十六進制值 十進制值 對應按鍵
VK_LBUTTON 01 1 鼠標的左鍵
VK_RBUTTON 02 2 鼠標的右鍵
VK-CANCEL 03 3 Ctrl+Break(通常不需要處理)
VK_MBUTTON 04 4 鼠標的中鍵(三按鍵鼠標)
VK_BACK 08 8 Backspace鍵
VK_TAB 09 9 Tab鍵
VK_CLEAR 0C 12 Clear鍵(Num Lock關閉時的數字鍵盤5)
VK_RETURN 0D 13 Enter鍵
VK_SHIFT 10 16 Shift鍵
VK_CONTROL 11 17 Ctrl鍵
VK_MENU 12 18 Alt鍵
VK_PAUSE 13 19 Pause鍵
VK_CAPITAL 14 20 Caps Lock鍵
VK_ESCAPE 1B 27 Ese鍵
VK_SPACE 20 32 Spacebar鍵
VK_PRIOR 21 33 Page Up鍵
VK_NEXT 22 34 Page Domw鍵
VK_END 23 35 End鍵
VK_HOME 24 36 Home鍵
VK_LEFT 25 37 LEFT ARROW 鍵(←)
VK_UP 26 38 UP ARROW鍵(↑)
VK_RIGHT 27 39 RIGHT ARROW鍵(→)
VK_DOWN 28 40 DOWN ARROW鍵(↓)
VK_Select 29 41 Select鍵
VK_PRINT 2A 42
VK_EXECUTE 2B 43 EXECUTE鍵
VK_SNAPSHOT 2C 44 Print Screen鍵(抓屏)
VK_Insert 2D 45 Ins鍵(Num Lock關閉時的數字鍵盤0)
VK_Delete 2E 46 Del鍵(Num Lock關閉時的數字鍵盤.)
VK_HELP 2F 47 Help鍵
VK_0 30 48 0鍵
VK_1 31 49 1鍵
VK_2 32 50 2鍵
VK_3 33 51 3鍵
VK_4 34 52 4鍵
VK_5 35 53 5鍵
VK_6 36 54 6鍵
VK_7 37 55 7鍵
VK_8 38 56 8鍵
VK_9 39 57 9鍵
VK_A 41 65 A鍵
VK_B 42 66 B鍵
VK_C 43 67 C鍵
VK_D 44 68 D鍵
VK_E 45 69 E鍵
VK_F 46 70 F鍵
VK_G 47 71 G鍵
VK_H 48 72 H鍵
VK_I 49 73 I鍵
VK_J 4A 74 J鍵
VK_K 4B 75 K鍵
VK_L 4C 76 L鍵
VK_M 4D 77 M鍵
VK_N 4E 78 N鍵
VK_O 4F 79 O鍵
VK_P 50 80 P鍵
VK_Q 51 81 Q鍵
VK_R 52 82 R鍵
VK_S 53 83 S鍵
VK_T 54 84 T鍵
VK_U 55 85 U鍵
VK_V 56 86 V鍵
VK_W 57 87 W鍵
VK_X 58 88 X鍵
VK_Y 59 89 Y鍵
VK_Z 5A 90 Z鍵
VK_NUMPAD0 60 96 數字鍵0鍵
VK_NUMPAD1 61 97 數字鍵1鍵
VK_NUMPAD2 62 98 數字鍵2鍵
VK_NUMPAD3 62 99 數字鍵3鍵
VK_NUMPAD4 64 100 數字鍵4鍵
VK_NUMPAD5 65 101 數字鍵5鍵
VK_NUMPAD6 66 102 數字鍵6鍵
VK_NUMPAD7 67 103 數字鍵7鍵
VK_NUMPAD8 68 104 數字鍵8鍵
VK_NUMPAD9 69 105 數字鍵9鍵
VK_MULTIPLY 6A 106 數字鍵盤上的*鍵
VK_ADD 6B 107 數字鍵盤上的+鍵
VK_SEPARATOR 6C 108 Separator鍵
VK_SUBTRACT 6D 109 數字鍵盤上的-鍵
VK_DECIMAL 6E 110 數字鍵盤上的.鍵
VK_DIVIDE 6F 111 數字鍵盤上的/鍵
VK_F1 70 112 F1鍵
VK_F2 71 113 F2鍵
VK_F3 72 114 F3鍵
VK_F4 73 115 F4鍵
VK_F5 74 116 F5鍵
VK_F6 75 117 F6鍵
VK_F7 76 118 F7鍵
VK_F8 77 119 F8鍵
VK_F9 78 120 F9鍵
VK_F10 79 121 F10鍵
VK_F11 7A 122 F11鍵
VK_F12 7B 123 F12鍵
VK_NUMLOCK 90 144 Num Lock 鍵
VK_SCROLL 91 145 Scroll Lock鍵
上面沒有提到的:(都在大鍵盤)
VK_LWIN 91 左win鍵
VK_RWIN 92 右win鍵
VK_APPS 93 右Ctrl左邊鍵,點擊相當於點擊鼠標右鍵,會彈出快捷菜單
186 ;(分號)
187 =鍵
188 ,鍵(逗號)
189 -鍵(減號)
190 .鍵(句號)
191 /鍵
192 `鍵(Esc下面)
219 [鍵
220 \鍵
221 ]鍵
222 ‘鍵(引號)
delphi虛擬鍵碼對應關鍵
VK_LBUTTON鼠標左鍵
VK_RBUTTON鼠標右鍵
VK_CANCEL控制+休息
VK_MBUTTON鼠標中鍵
VK_BACK Backspace鍵
VK_TAB Tab鍵
VK_CLEAR清除主要
VK_RETURN Enter鍵
VK_SHIFT Shift鍵
VK_CONTROL Ctrl鍵
VK_MENU Alt鍵
VK_PAUSE暫停關鍵
VK_CAPITAL Caps Lock鍵
VK_KANA可與輸入法
VK_HANGUL可與輸入法
VK_JUNJA可與輸入法
VK_FINAL可與輸入法
VK_HANJA可與輸入法
VK_KANJI可與輸入法
VK_CONVERT可與輸入法
VK_NONCONVERT可與輸入法
VK_ACCEPT可與輸入法
VK_MODECHANGE可與輸入法
VK_ESCAPE Esc鍵
VK_SPACE空間酒吧
VK_PRIOR頁鍵
VK_NEXT下一頁關鍵
VK_END END鍵
VK_HOME主頁關鍵
VK_LEFT左箭頭鍵
VK_UP向上鍵
VK_RIGHT右箭頭鍵
VK_DOWN下箭頭鍵
VK_SELECT選擇關鍵
VK_PRINT打印鍵(鍵盤的具體)
VK_EXECUTE執行關鍵
VK_SNAPSHOT Print Screen鍵
VK_INSERT插入關鍵
VK_DELETE Delete鍵
VK_HELP幫助關鍵
VK_LWIN左Windows鍵(微軟鍵盤)
VK_RWIN右Windows鍵(微軟鍵盤)
VK_APPS應用關鍵(微軟鍵盤)
VK_NUMPAD0 0鍵(數字鍵盤)
VK_NUMPAD1 1鍵(數字鍵盤)
VK_NUMPAD2 2鍵(數字鍵盤)
VK_NUMPAD3 3鍵(數字鍵盤)
VK_NUMPAD4 4鍵(數字鍵盤)
VK_NUMPAD5 5鍵(數字鍵盤)
VK_NUMPAD6 6鍵(數字鍵盤)
VK_NUMPAD7 7鍵(數字鍵盤)
VK_NUMPAD8 8鍵(數字鍵盤)
VK_NUMPAD9 9鍵(數字鍵盤)
VK_MULTIPLY多鍵(數字鍵盤)
VK_ADD添加鍵(數字鍵盤)
VK_SEPARATOR分離鍵(數字鍵盤)
VK_SUBTRACT減去鍵(數字鍵盤)
VK_DECIMAL小數點鍵(數字鍵盤)
VK_DIVIDE鴻溝鍵(數字鍵盤)
VK_F1 F1鍵
VK_F2 F2鍵
VK_F3 F3的關鍵
VK_F4 F4鍵
VK_F5 F5鍵
VK_F6 F6鍵
VK_F7 F7鍵
VK_F8 F8鍵
VK_F9 F9鍵
VK_F10 F10鍵關鍵
VK_F11 F11鍵
VK_F12 F12鍵
VK_F13 F13鍵
VK_F14 F14鍵
VK_F15 F15鍵
VK_F16 F16鍵
VK_F17 F17鍵
VK_F18 F18鍵
VK_F19 F19鍵
VK_F20 F20鍵
VK_F21 F21鍵
VK_F22 F22鍵
VK_F23 F23鍵
VK_F24 F24鍵
VK_NUMLOCK數Lock鍵
VK_SCROLL滾動Lock鍵
VK_LSHIFT左Shift鍵(僅用於GetAsyncKeyState和GetKeyState )
VK_RSHIFT右Shift鍵(僅用於GetAsyncKeyState和GetKeyState )
VK_LCONTROL左Ctrl鍵(僅用於GetAsyncKeyState和GetKeyState )
VK_RCONTROL右Ctrl鍵(僅用於GetAsyncKeyState和GetKeyState )
VK_LMENU左Alt鍵(僅用於GetAsyncKeyState和GetKeyState )
VK_RMENU右Alt鍵(僅用於GetAsyncKeyState和GetKeyState )
VK_PROCESSKEY工藝關鍵
VK_ATTN經辦關鍵
VK_CRSEL CrSel關鍵
VK_EXSEL ExSel關鍵
VK_EREOF擦除EOF分析關鍵
VK_PLAY發揮關鍵
VK_ZOOM變焦關鍵
VK_NONAME保留以供將來使用
VK_PA1 PA1關鍵
VK_OEM_CLEAR清除主要標簽數: 1 “ F14鍵
VK_F15 F15鍵
VK_F16 F16鍵
VK_F17 F17鍵
VK_F18 F18鍵
VK_F19 F19鍵
VK_F20 F20鍵
VK_F21 F21鍵
VK_F22 F22鍵
VK_F23 F23鍵
VK_F24 F24鍵
VK_NUMLOCK數Lock鍵
VK_SCROLL滾動Lock鍵
VK_LSHIFT左Shift鍵(僅用於GetAsyncKeyState和GetKeyState )
VK_RSHIFT右Shift鍵(僅用於GetAsyncKeyState和GetKeyState )
VK_LCONTROL左Ctrl鍵(僅用於GetAsyncKeyState和GetKeyState )
VK_RCONTROL右Ctrl鍵(僅用於GetAsyncKeyState和GetKeyState )
VK_LMENU左Alt鍵(僅用於GetAsyncKeyState和GetKeyState )
VK_RMENU右Alt鍵(僅用於GetAsyncKeyState和GetKeyState )
VK_PROCESSKEY工藝關鍵
VK_ATTN經辦關鍵
VK_CRSEL CrSel關鍵
VK_EXSEL ExSel關鍵
VK_EREOF擦除EOF分析關鍵
VK_PLAY發揮關鍵
VK_ZOOM變焦關鍵
VK_NONAME保留以供將來使用
VK_PA1 PA1關鍵
VK_OEM_CLEAR清除主要