您的位置 首页 > 数码极客

如何用消息模拟实现鼠标点击

前言

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

关于mouse_event

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

第二和第三个参数很明显就是坐标值,如果第一个参数设置了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。关键代码如下:

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

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

责任编辑: 鲁达

1.内容基于多重复合算法人工智能语言模型创作,旨在以深度学习研究为目的传播信息知识,内容观点与本网站无关,反馈举报请
2.仅供读者参考,本网站未对该内容进行证实,对其原创性、真实性、完整性、及时性不作任何保证;
3.本站属于非营利性站点无毒无广告,请读者放心使用!

“如何用消息模拟实现鼠标点击”边界阅读