一、鼠标事件模拟使用的函数是mouse_event()函数,对于鼠标事件我们应该确定两个问题:1.鼠标点击了哪个键:左键、中键、右键? 2.鼠标点击的位置。
mouse_event()函数常常配合SetCursorPos();函数来使用。
mouse_event():
1 2 3 4 5 6 7 |
|
参数1:告诉系统你的鼠标事件,一共有下面的几种鼠标事件可供选择:
MOUSEEVENTF_ABSOLUTE:表明参数dX,dy含有规范化的绝对坐标。如果不设置此位,那么dX和dY是相对于上一次鼠标的位置,例如上一次鼠标通过SetCursorPos(0,0)将鼠标的位置设置为了(0,0),那么这个时候的dX和dY就是相对于(0,0)的偏移。
此标志可被设置,也可不设置,不管鼠标的类型或与系统相连的类似于鼠标的设备的类型如何。要得到关于相对鼠标动作的信息,还是需要下面的几个类型的参数的:
MOUSEEVENTF_MOVE:表明发生移动。
MOUSEEVENTF_LEFTDOWN:表明接按下鼠标左键。
MOUSEEVENTF_LEFTUP:表明松开鼠标左键。
MOUSEEVENTF_RIGHTDOWN:表明按下鼠标右键。
MOUSEEVENTF_RIGHTUP:表明松开鼠标右键。
MOUSEEVENTF_MIDDLEDOWN:表明按下鼠标中键。
MOUSEEVENTF_MIDDLEUP:表明松开鼠标中键。
MOUSEEVENTF_WHEEL:如果鼠标有一个滚轮,表明鼠标轮被移动。移动的数量由dwData给出。
参数2:事件发生的x坐标,但也可能是偏移量
参数3:事件发生的y坐标,但也可能是偏移量
参数4:dwData:,如果dwFlags为MOUSEEVENTF_WHEEL,
则dwData指定鼠标轮移动的数量。正值表明鼠
标轮向前转动,即远离用户的方向;负值表明鼠
标轮向后转动,即朝向用户。一个轮击定义为
WHEEL_DELTA,即120。
参数5:指定与鼠标事件相关的附加32位值。应用程序
调用函数GetMessageExtraInfo来获得此附
加信息。
我们以鼠标双击(100,100)这个坐标为例子写一段代码片段吧,注意对于双击来说,其实就是短时间内左键按下然后左键弹起:
1 2 3 4 5 6 7 8 9 10 |
|
二、键盘事件模拟使用函数keybd_event()函数。
VOID keybd_event(BYTE bVk,BYTE bScan,DWORD dwFlags,DWORD dwExtralnfo);
参数1:一个8位的按键虚拟码,注意是1~254之间的
参数2:定义该键的硬件扫描码:。
参数3:定义函数操作的各个方面的一个标志位集。应用程
序可使用如下一些预定义常数的组合设置标志位。
KEYEVENTF_EXTENDEDKEY:若指定该值,则扫描码前
一个值为OXEO(224)的前缀字节。
KEYEVENTF_KEYUP:若指定该值,该键将被释放;若
未指定该值,该键将被按下。
参数4:定义与击键相关的附加的32位值。
我们以暴风影音的播放按钮为例来模拟键盘事件:
1
1
通过模拟键盘事件,给暴风影音的播放按钮发送消息
HWND hFrmWnd=::FindWindow(_T("Baofeng_StormPlayer"),NULL);
if (hFrmWnd!=NULL)
{
::ShowWindow(hFrmWnd,SW_SHOWNORMAL);
::SetForegroundWindow(hFrmWnd);
keybd_event(VK_SPACE,0,0,0);
Sleep(200);
keybd_event(VK_SPACE,0,KEYEVENTF_KEYUP,0);
}
三、键盘 虚拟码表
VK_LBUTTON | 1 | 鼠标左键 |
VK_RBUTTON | 2 | 鼠标右键 |
VK_CANCEL | 3 | Cancel |
VK_MBUTTON | 4 | 鼠标中键 |
VK_XBUTTON1 | 5 | |
VK_XBUTTON2 | 6 | |
VK_BACK | 8 | Backspace |
VK_TAB | 9 | Tab |
VK_CLEAR | 12 | Clear |
VK_RETURN | 13 | Enter |
VK_SHIFT | 16 | Shift |
VK_CONTROL | 17 | Ctrl |
VK_MENU | 18 | Alt |
VK_PAUSE | 19 | Pause |
VK_CAPITAL | 20 | Caps Lock |
VK_KANA | 21 | |
VK_HANGUL | 21 | |
VK_JUNJA | 23 | |
VK_FINAL | 24 | |
VK_HANJA | 25 | |
VK_KANJI | 25* | |
VK_ESCAPE | 27 | Esc |
VK_CONVERT | 28 | |
VK_NONCONVERT | 29 | |
VK_ACCEPT | 30 | |
VK_MODECHANGE | 31 | |
VK_SPACE | 32 | Space |
VK_PRIOR | 33 | Page Up |
VK_NEXT | 34 | Page Down |
VK_END | 35 | End |
VK_HOME | 36 | Home |
VK_LEFT | 37 | Left Arrow |
VK_UP | 38 | Up Arrow |
VK_RIGHT | 39 | Right Arrow |
VK_DOWN | 40 | Down Arrow |
VK_SELECT | 41 | Select |
VK_PRINT | 42 | |
VK_EXECUTE | 43 | Execute |
VK_SNAPSHOT | 44 | Snapshot |
VK_INSERT | 45 | Insert |
VK_DELETE | 46 | Delete |
VK_HELP | 47 | Help |
48 | 0 | |
49 | 1 | |
50 | 2 | |
51 | 3 | |
52 | 4 | |
53 | 5 | |
54 | 6 | |
55 | 7 | |
56 | 8 | |
57 | 9 | |
65 | A | |
66 | B | |
67 | C | |
68 | D | |
69 | E | |
70 | F | |
71 | G | |
72 | H | |
73 | I | |
74 | J | |
75 | K | |
76 | L | |
77 | M | |
78 | N | |
79 | O | |
80 | P | |
81 | Q | |
82 | R | |
83 | S | |
84 | T | |
85 | U | |
86 | V | |
87 | W | |
88 | X | |
89 | Y | |
90 | Z | |
VK_LWIN | 91 | |
VK_RWIN | 92 | |
VK_APPS | 93 | |
VK_SLEEP | 95 | |
VK_NUMPAD0 | 96 | 小键盘 0 |
VK_NUMPAD1 | 97 | 小键盘 1 |
VK_NUMPAD2 | 98 | 小键盘 2 |
VK_NUMPAD3 | 99 | 小键盘 3 |
VK_NUMPAD4 | 100 | 小键盘 4 |
VK_NUMPAD5 | 101 | 小键盘 5 |
VK_NUMPAD6 | 102 | 小键盘 6 |
VK_NUMPAD7 | 103 | 小键盘 7 |
VK_NUMPAD8 | 104 | 小键盘 8 |
VK_NUMPAD9 | 105 | 小键盘 9 |
VK_MULTIPLY | 106 | 小键盘 * |
VK_ADD | 107 | 小键盘 + |
VK_SEPARATOR | 108 | 小键盘 Enter |
VK_SUBTRACT | 109 | 小键盘 - |
VK_DECIMAL | 110 | 小键盘 . |
VK_DIVIDE | 111 | 小键盘 / |
VK_F1 | 112 | F1 |
VK_F2 | 113 | F2 |
VK_F3 | 114 | F3 |
VK_F4 | 115 | F4 |
VK_F5 | 116 | F5 |
VK_F6 | 117 | F6 |
VK_F7 | 118 | F7 |
VK_F8 | 119 | F8 |
VK_F9 | 120 | F9 |
VK_F10 | 121 | F10 |
VK_F11 | 122 | F11 |
VK_F12 | 123 | F12 |
VK_F13 | 124 | |
VK_F14 | 125 | |
VK_F15 | 126 | |
VK_F16 | 127 | |
VK_F17 | 128 | |
VK_F18 | 129 | |
VK_F19 | 130 | |
VK_F20 | 131 | |
VK_F21 | 132 | |
VK_F22 | 133 | |
VK_F23 | 134 | |
VK_F24 | 135 | |
VK_NUMLOCK | 144 | Num Lock |
VK_SCROLL | 145 | Scroll |
VK_LSHIFT | 160 | |
VK_RSHIFT | 161 | |
VK_LCONTROL | 162 | |
VK_RCONTROL | 163 | |
VK_LMENU | 164 | |
VK_RMENU | 165 | |
VK_BROWSER_BACK | 166 | |
VK_BROWSER_FORWARD | 167 | |
VK_BROWSER_REFRESH | 168 | |
VK_BROWSER_STOP | 169 | |
VK_BROWSER_SEARCH | 170 | |
VK_BROWSER_FAVORITES | 171 | |
VK_BROWSER_HOME | 172 | |
VK_VOLUME_MUTE | 173 | VolumeMute |
VK_VOLUME_DOWN | 174 | VolumeDown |
VK_VOLUME_UP | 175 | VolumeUp |
VK_MEDIA_NEXT_TRACK | 176 | |
VK_MEDIA_PREV_TRACK | 177 | |
VK_MEDIA_STOP | 178 | |
VK_MEDIA_PLAY_PAUSE | 179 | |
VK_LAUNCH_MAIL | 180 | |
VK_LAUNCH_MEDIA_SELECT | 181 | |
VK_LAUNCH_APP1 | 182 | |
VK_LAUNCH_APP2 | 183 | |
VK_OEM_1 | 186 | ; : |
VK_OEM_PLUS | 187 | = + |
VK_OEM_COMMA | 188 | |
VK_OEM_MINUS | 189 | - _ |
VK_OEM_PERIOD | 190 | |
VK_OEM_2 | 191 | / ? |
VK_OEM_3 | 192 | ` ~ |
VK_OEM_4 | 219 | [ { |
VK_OEM_5 | 220 | \ | |
VK_OEM_6 | 221 | ] } |
VK_OEM_7 | 222 | ' " |
VK_OEM_8 | 223 | |
VK_OEM_102 | 226 | |
VK_PACKET | 231 | |
VK_PROCESSKEY | 229 | |
VK_ATTN | 246 | |
VK_CRSEL | 247 | |
VK_EXSEL | 248 | |
VK_EREOF | 249 | |
VK_PLAY | 250 | |
VK_ZOOM | 251 | |
VK_NONAME | 252 | |
VK_PA1 | 253 | |
VK_OEM_CLEAR | 254 |
VK_LBUTTON | 1 | 鼠标左键 |
VK_RBUTTON | 2 | 鼠标右键 |
VK_CANCEL | 3 | Cancel |
VK_MBUTTON | 4 | 鼠标中键 |
VK_XBUTTON1 | 5 | |
VK_XBUTTON2 | 6 | |
VK_BACK | 8 | Backspace |
VK_TAB | 9 | Tab |
VK_CLEAR | 12 | Clear |
VK_RETURN | 13 | Enter |
VK_SHIFT | 16 | Shift |
VK_CONTROL | 17 | Ctrl |
VK_MENU | 18 | Alt |
VK_PAUSE | 19 | Pause |
VK_CAPITAL | 20 | Caps Lock |
VK_KANA | 21 | |
VK_HANGUL | 21 | |
VK_JUNJA | 23 | |
VK_FINAL | 24 | |
VK_HANJA | 25 | |
VK_KANJI | 25* | |
VK_ESCAPE | 27 | Esc |
VK_CONVERT | 28 | |
VK_NONCONVERT | 29 | |
VK_ACCEPT | 30 | |
VK_MODECHANGE | 31 | |
VK_SPACE | 32 | Space |
VK_PRIOR | 33 | Page Up |
VK_NEXT | 34 | Page Down |
VK_END | 35 | End |
VK_HOME | 36 | Home |
VK_LEFT | 37 | Left Arrow |
VK_UP | 38 | Up Arrow |
VK_RIGHT | 39 | Right Arrow |
VK_DOWN | 40 | Down Arrow |
VK_SELECT | 41 | Select |
VK_PRINT | 42 | |
VK_EXECUTE | 43 | Execute |
VK_SNAPSHOT | 44 | Snapshot |
VK_INSERT | 45 | Insert |
VK_DELETE | 46 | Delete |
VK_HELP | 47 | Help |
48 | 0 | |
49 | 1 | |
50 | 2 | |
51 | 3 | |
52 | 4 | |
53 | 5 | |
54 | 6 | |
55 | 7 | |
56 | 8 | |
57 | 9 | |
65 | A | |
66 | B | |
67 | C | |
68 | D | |
69 | E | |
70 | F | |
71 | G | |
72 | H | |
73 | I | |
74 | J | |
75 | K | |
76 | L | |
77 | M | |
78 | N | |
79 | O | |
80 | P | |
81 | Q | |
82 | R | |
83 | S | |
84 | T | |
85 | U | |
86 | V | |
87 | W | |
88 | X | |
89 | Y | |
90 | Z | |
VK_LWIN | 91 | |
VK_RWIN | 92 | |
VK_APPS | 93 | |
VK_SLEEP | 95 | |
VK_NUMPAD0 | 96 | 小键盘 0 |
VK_NUMPAD1 | 97 | 小键盘 1 |
VK_NUMPAD2 | 98 | 小键盘 2 |
VK_NUMPAD3 | 99 | 小键盘 3 |
VK_NUMPAD4 | 100 | 小键盘 4 |
VK_NUMPAD5 | 101 | 小键盘 5 |
VK_NUMPAD6 | 102 | 小键盘 6 |
VK_NUMPAD7 | 103 | 小键盘 7 |
VK_NUMPAD8 | 104 | 小键盘 8 |
VK_NUMPAD9 | 105 | 小键盘 9 |
VK_MULTIPLY | 106 | 小键盘 * |
VK_ADD | 107 | 小键盘 + |
VK_SEPARATOR | 108 | 小键盘 Enter |
VK_SUBTRACT | 109 | 小键盘 - |
VK_DECIMAL | 110 | 小键盘 . |
VK_DIVIDE | 111 | 小键盘 / |
VK_F1 | 112 | F1 |
VK_F2 | 113 | F2 |
VK_F3 | 114 | F3 |
VK_F4 | 115 | F4 |
VK_F5 | 116 | F5 |
VK_F6 | 117 | F6 |
VK_F7 | 118 | F7 |
VK_F8 | 119 | F8 |
VK_F9 | 120 | F9 |
VK_F10 | 121 | F10 |
VK_F11 | 122 | F11 |
VK_F12 | 123 | F12 |
VK_F13 | 124 | |
VK_F14 | 125 | |
VK_F15 | 126 | |
VK_F16 | 127 | |
VK_F17 | 128 | |
VK_F18 | 129 | |
VK_F19 | 130 | |
VK_F20 | 131 | |
VK_F21 | 132 | |
VK_F22 | 133 | |
VK_F23 | 134 | |
VK_F24 | 135 | |
VK_NUMLOCK | 144 | Num Lock |
VK_SCROLL | 145 | Scroll |
VK_LSHIFT | 160 | |
VK_RSHIFT | 161 | |
VK_LCONTROL | 162 | |
VK_RCONTROL | 163 | |
VK_LMENU | 164 | |
VK_RMENU | 165 | |
VK_BROWSER_BACK | 166 | |
VK_BROWSER_FORWARD | 167 | |
VK_BROWSER_REFRESH | 168 | |
VK_BROWSER_STOP | 169 | |
VK_BROWSER_SEARCH | 170 | |
VK_BROWSER_FAVORITES | 171 | |
VK_BROWSER_HOME | 172 | |
VK_VOLUME_MUTE | 173 | VolumeMute |
VK_VOLUME_DOWN | 174 | VolumeDown |
VK_VOLUME_UP | 175 | VolumeUp |
VK_MEDIA_NEXT_TRACK | 176 | |
VK_MEDIA_PREV_TRACK | 177 | |
VK_MEDIA_STOP | 178 | |
VK_MEDIA_PLAY_PAUSE | 179 | |
VK_LAUNCH_MAIL | 180 | |
VK_LAUNCH_MEDIA_SELECT | 181 | |
VK_LAUNCH_APP1 | 182 | |
VK_LAUNCH_APP2 | 183 | |
VK_OEM_1 | 186 | ; : |
VK_OEM_PLUS | 187 | = + |
VK_OEM_COMMA | 188 | |
VK_OEM_MINUS | 189 | - _ |
VK_OEM_PERIOD | 190 | |
VK_OEM_2 | 191 | / ? |
VK_OEM_3 | 192 | ` ~ |
VK_OEM_4 | 219 | [ { |
VK_OEM_5 | 220 | \ | |
VK_OEM_6 | 221 | ] } |
VK_OEM_7 | 222 | ' " |
VK_OEM_8 | 223 | |
VK_OEM_102 | 226 | |
VK_PACKET | 231 | |
VK_PROCESSKEY | 229 | |
VK_ATTN | 246 | |
VK_CRSEL | 247 | |
VK_EXSEL | 248 | |
VK_EREOF | 249 | |
VK_PLAY | 250 | |
VK_ZOOM | 251 | |
VK_NONAME | 252 | |
VK_PA1 | 253 | |
VK_OEM_CLEAR | 254 |