admin 管理员组文章数量: 1184232
0. 前言
最近在写一个脚本,需要用到监测用户是否点击鼠标中键,然后触发相应的功能。这本身就是个很简单的功能,看别人有很多解决方案:有用pygame的有用tkinter的,总觉得不太合适:我就实现个这么简单的功能,有没有更专业的专门处理这一类问题的库呢?于是找到了PyHook3.
PyHook作用是监测键盘和鼠标事件,底层还是使用windows API实现,这给人的感觉就很舒服了。注意我们要安装的是PyHook3而不是pyHook,究其原因是pyHook在Python3上运行会有奇怪的BUG(亲测)
1. 安装PyHook3
我的环境是Python3.7, win10
安装总共分三步:
(1)安装python对应版本的pyhook3
(2)安装swig
(3)安装visual c++ 14.0
(4)pip直接安装:pip install PyHook3
(如果跳过前两步直接pip安装会出现两片红色的报错)
第(1)步:
参考
的第一步。
具体步骤为:下载
这个网站的
利用CMD窗口定位到解压缩的文件夹执行setup.py。执行命令为python setup.py build。
(2)(3)操作步骤这篇博客说得很详细了:
2. 检测鼠标左键/中键/右键是否按下
先上代码,注释中有讲解
import PyHook3 as pyHook
import pythoncom # 没这个库的直接pip install pywin32安装
i,j,k =0,0,0deffuncLeft(event):if(event.MessageName !="mouse move"):# 因为鼠标一动就会有很多mouse move,所以把这个过滤下global i
i = i +1print('第{:3d}次:按下鼠标左键我就会出现,嘻嘻'.format(i))returnTruedeffuncMiddle(event):if(event.MessageName !="mouse move"):# 因为鼠标一动就会有很多mouse move,所以把这个过滤下global j
j = j +1print('第{:3d}次:按下鼠标中键我就会出现,嘻嘻'.format(j))returnTruedeffuncRight(event):if(event.MessageName !="mouse move"):# 因为鼠标一动就会有很多mouse move,所以把这个过滤下global k
k = k +1print('第{:3d}次:按下鼠标右键我就会出现,嘻嘻'.format(k))returnTruedefmain():# 创建管理器
hm = pyHook.HookManager()# 监听鼠标# hm.MouseLeftDown 是将“鼠标左键按下”这一事件和func这个函数绑定,即每次鼠标左键按下都会执行func# 如果希望监测鼠标中键按下则:hm.MouseMiddleDown,鼠标右键按下则:hm.MouseRightDown
hm.MouseLeftDown = funcLeft # 监测鼠标左键是否按下
hm.MouseMiddleDown = funcMiddle # 监测鼠标中键是否按下
hm.MouseRightDown = funcRight # 监测鼠标右键是否按下
hm.HookMouse()# 循环监听
pythoncom.PumpMessages()if __name__ =="__main__":
main()
运行结果:
3. PyHook3详细讲解
这个库的功能本身就很简单,这篇博客讲得超级好:
版权声明:本文标题:编程小工具:利用Python轻松模拟鼠标左键单击操作 内容由网友自发贡献,该文观点仅代表作者本人, 转载请联系作者并注明出处:http://www.roclinux.cn/b/1772043572a3551475.html, 本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。
发表评论