要想用好模拟键盘操作,那么模拟鼠标也是必不可少的


在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++ 模拟键盘操作(三)模拟鼠标输入相关推荐

  1. 1121Selenium web自动化测试经验分享-模拟键盘操作的三种类;推荐使用PyUserInput模块

    在Web自动化测试中,有时候会用键盘来输入内容,没那么常用,但分享下我爬的坑. 个人博客:https://blog.csdn.net/zyooooxie 第一个:keys模块 WebDriver中对键 ...

  2. python模拟键盘打字_python模拟鼠标点击和键盘输入的操作

    所有代码都是网上百度出来的,通过个人实践找到适合自己的. 采用的python 库是 pymouse.pykeyboard 安装时直接pip安装的,pip install PyUserInput 实现了 ...

  3. C++模拟键盘操作窗口入门

    C++模拟键盘操作窗口入门之文件监控操作句柄操作 #include <iostream> #include <windows.h> #include <tchar.h&g ...

  4. [139]python selenium之模拟键盘操作

    selenium 提供了比较完整的键盘操作,在使用的模拟键盘操作之前需要我们导入from selenium.webdriver.common.keys import Keys即可,然后就可以来模拟键盘 ...

  5. qt模拟键盘的三种实现方式(思路+demo)

    转载:http://www.360doc.com/content/13/1122/15/6828497_331303961.shtml 按照我自己的理解,qt模拟键盘分三个层次的模拟. 1.单线程的模 ...

  6. Selenium中级 | 在Selenium中模拟键盘操作

    以下是基于Java语言在Selenium WebDriver中模拟键盘操作的一些常用方法总结 操作单个按键 比如按回车键.按F5进行页面刷新.按F11将窗口设为全屏模式等. 方式1:使用WebElem ...

  7. firefox下载文件弹出框之终极解决方案-vbs模拟键盘操作

    firefox下载文件弹出框之终极解决方案-vbs模拟键盘操作 参考文章: (1)firefox下载文件弹出框之终极解决方案-vbs模拟键盘操作 (2)https://www.cnblogs.com/ ...

  8. 【Python自动化测试】:模拟键盘操作

    在selenium中,把键盘的一系列按键封装在Keys类中,因此,我们在模拟键盘操作的时候,需要先导入Keys包,然后配合send_keys()方法使用 # 导入Keys类 from selenium ...

  9. 用VBS脚本模拟键盘操作

    用VBS脚本模拟键盘操作 背景 制作VBS脚本 保存下面的VBS程序代码到Txt文件中 根据自己的实际清空修改下列代码中的内容. 修改txt文件后缀为vbs 在计算机的CMD窗口中运行此脚本 后记,关 ...

最新文章

  1. 如何通过中序和层序序列建立二叉树
  2. python画曲线-如何通过python画loss曲线的方法
  3. @@ROWCOUNT 含义
  4. wordpress 外部数据接口_wordpress登录api接口
  5. Spring Boot 之 elasticsearch
  6. Telephone Wire(POJ-3612)
  7. 借助拳王虚拟项目公社,自动发货系统,卖虚拟教程产品,实现全自动化赚钱的秘密
  8. Spring中 BeanFactory 与 FactoryBean 的区别
  9. java web主流框架整合开发 光盘_开发者突击:Java Web主流框架整合开发(第2版)(附CD光盘1张)...
  10. 天朝四大不正经社交软件 第一名“亮了”
  11. mysql-日常命令使用汇总
  12. 凸二次规划的解法(x取值具有上确界)
  13. 大学追忆录(天空晴朗的梦)
  14. 如何通过文献名称获取相应的DOI号?
  15. 阿里巴巴淘宝网电子商务模式调查分析
  16. java 数字排列组合
  17. 空间句法高阶技能sDNA
  18. hdu 1757【A Simple Math Problem】
  19. Lepus安装与配置
  20. 创客匠人用户分组:用户定向运营,不浪费一滴流量

热门文章

  1. IDEA debug模式 Method breakpoints may dramatically slow down debugging 提示解决办法
  2. VirtualBox压缩虚拟硬盘
  3. 0基础如何自学Java(从入门到精通)
  4. excel表格内文字怎么换行_打印表格时试试给每页尾部添上同样的文字吧!||Excel技巧...
  5. C++线程池源代码实现1
  6. 高空上网几多愁 飞机上WiFi的那些事儿
  7. JVM调优学习笔记整理
  8. 模型预测控制算法基础与车辆纵向控制仿真分析
  9. 程序员需要常用到的几大工具,省事高效
  10. kafka零copy原理(1)