PyHook3安装(亲测有用)

pyhook 报错 “TypeError: KeyboardSwitch() missing 8 required positional arguments: ‘msg’, ‘vk_code’, ‘scan_code’, ‘ascii’, ‘flags’, ‘time’, ‘hwnd’, and ‘win_name’”
pyhook仅仅支持python2,支持python3还需pyhook3.安装pyhook3 踩坑良多,这里总结一下成功方法。

目录

一、PyHook3简介

二、安装Swig

Swig介绍

第1步:下载并解压

第2步:配置环境变量

三、安装pywin32

四、安装visual stdio 2019

五、安装pyhook3

六、pyHook库函数的使用方法

扫描二维码关注公众号,回复: 14650557 查看本文章

一、PyHook3简介

pyHook包为Windows中的全局鼠标和键盘事件提供回调。Python应用程序为用户输入事件注册事件处理程序,如鼠标左下、鼠标左上、键下等,并设置键盘和/或鼠标挂钩。底层的C库报告诸如事件时间、事件发生的窗口名称、事件值、键盘修饰符等信息。

二、安装Swig

Swig介绍

简单包装界面产生器(英语:Simplified Wrapper and Interface Generator, SWIG)是一个开源软件工具,用来将C语言或C++写的计算机程序或函式库,连接脚本语言,例如Lua, Perl, PHP, Python, R, Ruby, Tcl, 和其它语言,例如C#, Java, JavaScript, Go, D, OCaml, Octave, Scilab以及Scheme. 也可以输出成XML格式。

第1步:下载并解压

 下载:http://www.swig.org/download.html

从 Swig 官网下载 swigwin-4.0.2 文件并解压(最新版本即可)。由于我要用在Windows平台上,所以下载的是 “swigwin” 版,而不是 “swig” 版。只需要下载并解压即可,解压后的文件夹放到哪里都可以,只要知道 ‘swig.exe’ 文件所在的目录即可。

第2步:配置环境变量

在环境变量path中, 输入 “swig.exe” 文件的所在路径 ,点确定。 最好是系统path 和用户path里都加上它的地址。

三、安装pywin32

下载地址http://www.lfd.uci.edu/~gohlke/pythonlibs/#pywin32

选择适合自己python版本的下载 我的是python3.8 故下载

下载后cmd里输入:

pip install pywin32

四、安装visual stdio 2019

下载地址:https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/#visual-studio-2019-and-other-products下载后得到安装包并双击打开: 

 然后等待下载进入界面 勾选一个选项

 然后在单个组件中搜索14 勾选如下

五、安装pyhook3

做完准备工作即可使用pip 进行安装

cmd里输入:

pip install PyHook3

六、pyHook库函数的使用方法

Python小白·暗某人的博文:PyHook3详细教程

相关文章:PyHook3简明教程

import pythoncom
import PyHook3
 
hm = PyHook3.HookManager()
 
 
# 鼠标事件处理函数
def OnMouseEvent(event):
  print('MessageName:',event.MessageName)  #事件名称
  print('Message:',event.Message)          #windows消息常量 
  print('Time:',event.Time)                #事件发生的时间戳        
  print('Window:',event.Window)            #窗口句柄         
  print('WindowName:',event.WindowName)    #窗口标题
  print('Position:',event.Position)        #事件发生时相对于整个屏幕的坐标
  print('Wheel:',event.Wheel)              #鼠标滚轮
  print('Injected:',event.Injected)        #判断这个事件是否由程序方式生成,而不是正常的人为触发。
  print('---')
 
  # 返回True代表将事件继续传给其他句柄,为False则停止传递,即被拦截
  return True
 
#键盘事件处理函数
def OnKeyboardEvent(event):
  print('MessageName:',event.MessageName)          #同上,共同属性不再赘述
  print('Message:',event.Message)
  print('Time:',event.Time)
  print('Window:',event.Window)
  print('WindowName:',event.WindowName)
  print('Ascii:', event.Ascii, chr(event.Ascii))   #按键的ASCII码
  print('Key:', event.Key)                         #按键的名称
  print('KeyID:', event.KeyID)                     #按键的虚拟键值
  print('ScanCode:', event.ScanCode)               #按键扫描码
  print('Extended:', event.Extended)               #判断是否为增强键盘的扩展键
  print('Injected:', event.Injected)
  print('Alt', event.Alt)                          #是某同时按下Alt
  print('Transition', event.Transition)            #判断转换状态
  print('---')
 
  # 同上
  return True
 
#绑定事件处理函数
hm.MouseAllButtonsDown = OnMouseEvent #将OnMouseEvent函数绑定到MouseAllButtonsDown事件上
hm.KeyDown = OnKeyboardEvent          #将OnKeyboardEvent函数绑定到KeyDown事件上
 
hm.HookMouse()        #设置鼠标钩子
hm.HookKeyboard()   #设置键盘钩子
 
pythoncom.PumpMessages()

PyHook3我经常配合pyautogui使用

pyhook可以检测鼠标点击,pyautogui可以读取鼠标位置

感兴趣的小伙伴可以看看我这篇博文:

Python小白·暗某人的博文:PyHook3详细教程

猜你喜欢

转载自blog.csdn.net/anmouewn/article/details/128728992