sendmessage模拟鼠标点击_Qt如何模拟鼠标点击?

前言

上一篇写到《Qt如何实现模拟键盘按键?》,既然程序可以模拟键盘按键,那一定也能模拟鼠标点击吧。果然很容易就找到了mouse_event这个api。不仅可以模拟鼠标点击,还能模拟鼠标移动,滚轮滚动等。

关于mouse_event

93e51610ba84f46834919b7f020f5cb9.png

mouse_event没有返回值,有5个参数。第一个参数就是操作鼠标的标志(如鼠标左键按下,右键按下等),可选值

fc8852e436b939e5cef943c8fe54a95e.png

第二和第三个参数很明显就是坐标值,如果第一个参数设置了MOUSEEVENTF_ABSOLUTE则表示绝对坐标,否则是相对坐标。你四个参数表示鼠标滚轮滚动的值,如果第一个参数为MOUSEEVENTF_WHEEL才有用。最后一个参数表示鼠标事件的附加信息,不知道有啥用。

关于相对坐标和绝对坐标的差异:如果是相对坐标(即没有设置MOUSEEVENTF_ABSOLUTE)那第二和第三个参数的单位就是像素。如果是绝对坐标(即设置了MOUSEEVENTF_ABSOLUTE)需要进行换算。dx和dy的取值范围都是0 ~ 65535(单位不是像素)。我们需要将目标坐标转换为到dx和dy取值范围中的某一个值。假设屏幕分辨率为1366x768,目标像素坐标为100,200 那么dx和dy分别为100*65535/1366、 200*65535/768。

(关于参数dx和dy有一点很奇怪,经过测试dx和dy的值对鼠标按下和鼠标松开并没有作用,也就是说设置了dx和dy后鼠标都是在当前位置按下或松开)。

模拟鼠标点击

模拟鼠标点击需要先让鼠标移动到指定位置,可以使用MOUSEEVENTF_MOVE。然后点击,使用MOUSEEVENTF_LEFTDOWN和MOUSEEVENTF_LEFTUP。关键代码如下:

6623672bf15893d9284b5d97c359d3d3.png

代码很简单一看就能懂,例子中被注释的代码SetCursorPos(x,y)也能实现移动鼠标的功能。最后写个例子看看效果:

e9ee75cb588e4298931a61f1e1afcab4.gif

(一个简单的鼠标连点器)

相关资源:Qt模拟鼠标点击
  • 1
    点赞
  • 0
    评论
  • 1
    收藏
  • 一键三连
    一键三连
  • 扫一扫,分享海报

打赏
文章很值,打赏犒劳作者一下
表情包
插入表情
评论将由博主筛选后显示,对所有人可见 | 还能输入1000个字符
相关推荐
©️2020 CSDN 皮肤主题: 游动-白 设计师:白松林 返回首页

打赏

陈記甜酒

你的鼓励将是我创作的最大动力

¥2 ¥4 ¥6 ¥10 ¥20
输入1-500的整数
余额支付 (余额:-- )
扫码支付
扫码支付:¥2
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者