C/C++ 模拟键盘操作(三)模拟鼠标输入
要想用好模拟键盘操作,那么模拟鼠标也是必不可少的
在Windows系统中提供了一个名为mouse_event的函数,有关这个函数的原型如下
VOID mouse_event(DWORD dwFlags, // 鼠标动作DWORD dx, // 鼠标x坐标DWORD dy, // 鼠标y坐标DWORD dwData, // 鼠标轮ULONG_PTR dwExtraInfo // 指定与鼠标事件相关的附加32位值。应用程序调用函数GetMessageExtraInfo来获得此附加信息
);
详细解释
参数
dwFlags
标志位集,指定点击按钮和鼠标动作的多种情况。此参数可以是下列值的某种组合:
名称 | 说明 |
---|---|
MOUSEEVENTF_ABSOLUTE |
dX和dY参数含有规范化的绝对坐标。如果不设置,这些参数含有相对数据:相对于上次位置的改动位置。此标志可设置,也可不设置,不管鼠标的类型或与系统相连的类似于鼠标的设备的类型如何。要得到关于相对鼠标动作的信息,参见下面备注部分。 |
MOUSEEVENTF_MOVE |
这表示鼠标移动 |
MOUSEEVENTF_LEFTDOWN | 这表示鼠标左键按下 |
MOUSEEVENTF_LEFTUP | 这表示鼠标左键松开 |
MOUSEEVENTF_RIGHTDOWN | 这表示鼠标右键按下 |
MOUSEEVENTF_RIGHTUP | 这表示鼠标右键松开 |
MOUSEEVENTF_MIDDLEDOWN | 这表示鼠标中键按下 |
MOUSEEVENTF_MIDDLEUP | 这表示鼠标中键松开 |
MOUSEEVENTF_WHEEL | 这表示鼠标轮被滚动,如果鼠标有一个滚轮。滚动的数量由dwData给出。 |
dx
指定鼠标沿x轴的绝对位置或者从上次鼠标事件产生以来移动的数量,依赖于MOUSEEVENTF_ABSOLUTE的设置。给出的绝对数据作为鼠标的实际X坐标;给出的相对数据作为移动的mickeys数。一个mickey表示鼠标移动的数量,表明鼠标已经移动。
dy
指定鼠标沿y轴的绝对位置或者从上次鼠标事件产生以来移动的数量,依赖于MOUSEEVENTF_ABSOLUTE的设置。给出的绝对数据作为鼠标的实际y坐标,给出的相对数据作为移动的mickeys数。
dwData
如果dwFlags为MOUSEEVENTF_WHEEL,则dwData指定鼠标轮移动的数量。正值表明鼠标轮向前转动,即远离用户的方向;负值表明鼠标轮向后转动,即朝向用户。一个轮击定义为WHEEL_DELTA,即120。如果dwFlagsS不是MOUSEEVENTF_WHEEL,则dWData应为零。
dwExtralnfo
指定与鼠标事件相关的附加32位值。应用程序调用函数GetMessageExtraInfo来获得此附加信息。
使用案例
#include <windows.h>
#include <iostream>
using namespace std;int main()
{mouse_event(MOUSEEVENTF_MIDDLEDOWN,500,500,0,0);//按下鼠标中键Sleep(3000);mouse_event(MOUSEEVENTF_MIDDLEUP,500,500,0,0);//放开鼠标中键return 0;}
1、这里是鼠标左键按下和松开两个事件的组合即一次单击:
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 )
2、模拟鼠标右键单击事件:
mouse_event (MOUSEEVENTF_RIGHTDOWN | MOUSEEVENTF_RIGHTUP, 0, 0, 0, 0 )
3、两次连续的鼠标左键单击事件 构成一次鼠标双击事件:
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 )
mouse_event (MOUSEEVENTF_LEFTDOWN | MOUSEEVENTF_LEFTUP, 0, 0, 0, 0 )
4、使用绝对坐标
MOUSEEVENTF_ABSOLUTE | MOUSEEVENTF_MOVE, 500, 500, 0, 0
需要说明的是,如果没有使用MOUSEEVENTF_ABSOLUTE,函数默认的是相对于鼠标当前位置的点,如果dx,和dy,用0,0表示,这函数认为是当前鼠标所在的点。
5、直接设定绝对坐标并单击
mouse_event(MOUSEEVENTF_LEFTDOWN, X * 65536 / 1024, Y * 65536 / 768, 0, 0);
mouse_event(MOUSEEVENTF_LEFTUP, X * 65536 / 1024, Y * 65536 / 768, 0, 0);
其中X,Y分别是你要点击的点的横坐标和纵坐标
现在学会了Windows mouse_event函数,现在我们就可以实现自己的脚本编写了。
C/C++ 模拟键盘操作(三)模拟鼠标输入相关推荐
- 1121Selenium web自动化测试经验分享-模拟键盘操作的三种类;推荐使用PyUserInput模块
在Web自动化测试中,有时候会用键盘来输入内容,没那么常用,但分享下我爬的坑. 个人博客:https://blog.csdn.net/zyooooxie 第一个:keys模块 WebDriver中对键 ...
- python模拟键盘打字_python模拟鼠标点击和键盘输入的操作
所有代码都是网上百度出来的,通过个人实践找到适合自己的. 采用的python 库是 pymouse.pykeyboard 安装时直接pip安装的,pip install PyUserInput 实现了 ...
- C++模拟键盘操作窗口入门
C++模拟键盘操作窗口入门之文件监控操作句柄操作 #include <iostream> #include <windows.h> #include <tchar.h&g ...
- [139]python selenium之模拟键盘操作
selenium 提供了比较完整的键盘操作,在使用的模拟键盘操作之前需要我们导入from selenium.webdriver.common.keys import Keys即可,然后就可以来模拟键盘 ...
- qt模拟键盘的三种实现方式(思路+demo)
转载:http://www.360doc.com/content/13/1122/15/6828497_331303961.shtml 按照我自己的理解,qt模拟键盘分三个层次的模拟. 1.单线程的模 ...
- Selenium中级 | 在Selenium中模拟键盘操作
以下是基于Java语言在Selenium WebDriver中模拟键盘操作的一些常用方法总结 操作单个按键 比如按回车键.按F5进行页面刷新.按F11将窗口设为全屏模式等. 方式1:使用WebElem ...
- firefox下载文件弹出框之终极解决方案-vbs模拟键盘操作
firefox下载文件弹出框之终极解决方案-vbs模拟键盘操作 参考文章: (1)firefox下载文件弹出框之终极解决方案-vbs模拟键盘操作 (2)https://www.cnblogs.com/ ...
- 【Python自动化测试】:模拟键盘操作
在selenium中,把键盘的一系列按键封装在Keys类中,因此,我们在模拟键盘操作的时候,需要先导入Keys包,然后配合send_keys()方法使用 # 导入Keys类 from selenium ...
- 用VBS脚本模拟键盘操作
用VBS脚本模拟键盘操作 背景 制作VBS脚本 保存下面的VBS程序代码到Txt文件中 根据自己的实际清空修改下列代码中的内容. 修改txt文件后缀为vbs 在计算机的CMD窗口中运行此脚本 后记,关 ...
最新文章
- 如何通过中序和层序序列建立二叉树
- python画曲线-如何通过python画loss曲线的方法
- @@ROWCOUNT 含义
- wordpress 外部数据接口_wordpress登录api接口
- Spring Boot 之 elasticsearch
- Telephone Wire(POJ-3612)
- 借助拳王虚拟项目公社,自动发货系统,卖虚拟教程产品,实现全自动化赚钱的秘密
- Spring中 BeanFactory 与 FactoryBean 的区别
- java web主流框架整合开发 光盘_开发者突击:Java Web主流框架整合开发(第2版)(附CD光盘1张)...
- 天朝四大不正经社交软件 第一名“亮了”
- mysql-日常命令使用汇总
- 凸二次规划的解法(x取值具有上确界)
- 大学追忆录(天空晴朗的梦)
- 如何通过文献名称获取相应的DOI号?
- 阿里巴巴淘宝网电子商务模式调查分析
- java 数字排列组合
- 空间句法高阶技能sDNA
- hdu 1757【A Simple Math Problem】
- Lepus安装与配置
- 创客匠人用户分组:用户定向运营,不浪费一滴流量
热门文章
- IDEA debug模式 Method breakpoints may dramatically slow down debugging 提示解决办法
- VirtualBox压缩虚拟硬盘
- 0基础如何自学Java(从入门到精通)
- excel表格内文字怎么换行_打印表格时试试给每页尾部添上同样的文字吧!||Excel技巧...
- C++线程池源代码实现1
- 高空上网几多愁 飞机上WiFi的那些事儿
- JVM调优学习笔记整理
- 模型预测控制算法基础与车辆纵向控制仿真分析
- 程序员需要常用到的几大工具,省事高效
- kafka零copy原理(1)