VC++鼠标、键盘的模拟操作
一、鼠标事件模拟使用的函数是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 |
VC++鼠标、键盘的模拟操作相关推荐
- 模拟鼠标键盘html,模拟按键操作神器(鼠标键盘模拟操作助手)V2.0.2.1 正式版
模拟按键操作神器(鼠标键盘模拟操作助手)是一款很优秀好用的由网友自制的模拟按键操作的辅助工具.如果你需要一款好用的键盘模拟软件,小编带来的这款模拟按键操作神器是很不错的选择,功能强大全面,使用后可以帮 ...
- Python脚本控制鼠标键盘完成机械化操作
Python直接控制鼠标键盘 使用Python脚本直接控制键盘鼠标 安装 $ sudo pip install pyautogui 安装的依赖包可能比较多,只要耐心等待即可 控制鼠标操作 # -*- ...
- selenium webdriver模拟鼠标键盘操作
在测试使用Selenium webdriver测试WEB系统的时候,用到了模拟鼠标.键盘的一些输入操作. 1.鼠标的左键点击.双击.拖拽.右键点击等: 2.键盘的回车.回退.空格.ctrl.alt.s ...
- Delphi下利用WinIo模拟鼠标键盘详解
本文最早在编程论坛上发表,文章地址:http://programbbs.com/bbs/view12-17207-1.htm,相关文件可以在上述地址的页面中下载.转载时请注明出处. 前言 一日发现Se ...
- vba模拟鼠标点击_鼠标键盘模拟大师下载_鼠标键盘模拟大师免费版官方下载6.2...
鼠标键盘模拟大师是目前国内唯一一款将鼠标自动点击.键盘自动输入.网页自动刷新和自动切换IP地址等功能完美结合与一体的鼠标键盘动作模拟软件,可以实现桌面及游戏的自动点击和按键点击等功能,有需要的小伙伴快 ...
- Delphi下利用SendInput模拟鼠标键盘
前言 发了一篇<Delphi下利用WinIo模拟鼠标键盘详解>(http://programbbs.com/bbs/view12-17207-1.htm),再发一个利用SendInput模 ...
- Ubuntu18.04 鼠标键盘失灵
问题描述 Ubuntu系统,未做特殊操作,远程登录忽然失效,过来一看发现鼠标和键盘都失灵.强制关机重启,在启动过程中以及登录界面,鼠标和键盘均正常,但是登录后,图形界面显示正常,鼠标和键盘都失灵. 解 ...
- ubantu系统(naro)鼠标键盘无法工作,连上了也不能工作
在装机器人开发环境的时候,下一些准备的软件的时候,有可能误删了驱动. 导致第二天开机的时候,鼠标键盘都没用了. 光标不动,键盘无反应. wx_camera_1663850486324 上网问度娘,给出 ...
- android 控制电脑 源代码 鼠标,如何用鼠标键盘来控制手机?这个开源工具可以帮你做到...
[摘要]scrcpy 可以将你的 Android 手机投屏到电脑上,并且通过鼠标和键盘来进行控制,有了它你就可以在电脑屏幕上管理手机. 手机和电脑之间的协作已经越来越常见:在电脑上登录账号,需要用手机 ...
- 如何用鼠标键盘来控制手机?这个开源工具可以帮你做到
如何用鼠标键盘来控制手机?这个开源工具可以帮你做到 scrcpy 可以将你的 Android 手机投屏到电脑上,并且通过鼠标和键盘来进行控制,有了它你就可以在电脑屏幕上管理手机. 手机和电脑之间的协作 ...
最新文章
- 2019.2.7 区块链论文翻译
- golang 读写文件的四种方式
- spring boot 在eclipse里启动正常,但打包后启动不起来
- 记一例 ORA-00904:标识符无效
- redis on windows
- 计算机视觉与深度学习 | Matlab实现ORBSLAM2(附完整代码)
- Android Lambda 表达式使用实例,-
- mysql出现core dumped_mysql-为什么我遇到分段错误(核心已转储)?
- CSS3的边框(二)
- sqlserver 时间递增循环
- RenderMonkey 练习 第一天 【opengl 纹理】
- Pandas——concat(合并)
- android汉字转拼音
- zip 和rar 的区别
- ffmpeg中tbr tbc tbn的含义解释
- 基于JAVA+SpringMVC+Mybatis+MYSQL的学生签到管理系统
- 学习STM32单片机,从菜鸟到牛人就是这么简单
- Qt自定义控件之仪表盘的完整实现
- 025-2018-1011 re模块
- D语言与C++做映射时需要注意的事情
热门文章
- 分子动力学模拟学习2-Gromacs运行分子动力学模拟
- 用Latex beamer做poster经验总结
- GitHub使用教程
- 微软ODBC服务器驱动,Microsoft ODBC 驱动程序的功能 - ODBC Driver for SQL Server | Microsoft Docs...
- ASCII码查询及简单说明
- 对涉密计算机检查内容,RG涉密信息自检查工具安全保密检查内容及方法.docx
- 三菱FX Q FX5U PLC 程序加密,使用ST结构化文
- 徐州计算机应用宿舍,江苏徐州财经高等职业技术学校住宿条件
- Keil5最新注册机到2032
- 控制台打印vue实例