0. 前言
最近在写一个脚本,需要用到监测用户是否点击鼠标中键,然后触发相应的功能。这本身就是个很简单的功能,看别人有很多解决方案:有用pygame的有用tkinter的,总觉得不太合适:我就实现个这么简单的功能,有没有更专业的专门处理这一类问题的库呢?于是找到了PyHook3.
PyHook作用是监测键盘和鼠标事件,底层还是使用windows API实现,这给人的感觉就很舒服了。注意我们要安装的是PyHook3而不是pyHook,究其原因是pyHook在Python3上运行会有奇怪的BUG(亲测)
1. 安装PyHook3
我的环境是Python3.7, win10
安装总共分三步: (1)安装swig (2)安装visual c++ 14.0 (3)pip直接安装:pip install PyHook3
(如果跳过前两步直接pip安装会出现两片红色的报错)
具体操作步骤这篇博客说得很详细了: pyhook3安装教程及与之相关的一些问题的解决方法
2. 检测鼠标左键/中键/右键是否按下
先上代码,注释中有讲解
import PyHook3 as pyHook
import pythoncom
i,j,k = 0,0,0
def funcLeft(event):
if (event.MessageName != "mouse move"):
global i
i = i + 1
print('第{:3d}次:按下鼠标左键我就会出现,嘻嘻'.format(i))
return True
def funcMiddle(event):
if (event.MessageName != "mouse move"):
global j
j = j + 1
print('第{:3d}次:按下鼠标中键我就会出现,嘻嘻'.format(j))
return True
def funcRight(event):
if (event.MessageName != "mouse move"):
global k
k = k + 1
print('第{:3d}次:按下鼠标右键我就会出现,嘻嘻'.format(k))
return True
def main():
hm = pyHook.HookManager()
hm.MouseLeftDown = funcLeft
hm.MouseMiddleDown = funcMiddle
hm.MouseRightDown = funcRight
hm.HookMouse()
pythoncom.PumpMessages()
if __name__ == "__main__":
main()
运行结果:
3. PyHook3详细讲解
这个库的功能本身就很简单,这篇博客讲得超级好:
PyHook3简明教程
|