python安装PyHook3

pyhook 报错 “TypeError: KeyboardSwitch() missing 8 required positional arguments: ‘msg’, ‘vk_code’, ‘scan_code’, ‘ascii’, ‘flags’, ‘time’, ‘hwnd’, and ‘win_name’”

一、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” 文件的所在路径 ,点确定。

三、安装pywin32

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

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

在这里插入图片描述

四、安装pywin32

pip install pywin32

五、安装pyhook3

···python
pip install PyHook3
···

pyhook3使用

import pythoncom
import PyHook3hm = 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)                          #是某同时按下Altprint('Transition', event.Transition)            #判断转换状态print('---')# 同上return True#绑定事件处理函数
hm.MouseAllButtonsDown = OnMouseEvent #将OnMouseEvent函数绑定到MouseAllButtonsDown事件上
hm.KeyDown = OnKeyboardEvent          #将OnKeyboardEvent函数绑定到KeyDown事件上hm.HookMouse()        #设置鼠标钩子
hm.HookKeyboard()   #设置键盘钩子pythoncom.PumpMessages()

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/231341.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

测绘地理信息安全保密管理制度文件

测绘地理信息安全保密管理制度文件 建立健全测绘地理信息安全保密管理制度。明确涉密人员管理、保密要害部门部位管理、涉密设备与存储介质管理、涉密测绘成果全流程保密、保密自查等要求。

【知识】简单理解为何GCN层数越多越能覆盖多跳邻居聚合信息范围更广

转载请注明出处:小锋学长生活大爆炸[xfxuezhang.cn] 背景说明 大多数博客在介绍GCN层数时候,都会提到如下几点(经总结): 在第一层,节点聚合来自其直接邻居的信息。在第二层,由于每个节点现在包含了其直接邻居的信息&a…

C++ day44完全背包问题 零钱兑换Ⅱ 组合总和Ⅳ

完全背包:一个物品可以使用无数次,将01背包中倒序遍历背包变成正序遍历背包 遍历顺序:在完全背包中,对于一维dp数组来说,其实两个for循环嵌套顺序是无所谓的! 先遍历物品,后遍历背包可以&#…

LeetCode [简单](非递归)二叉树的中序遍历

遍历左孩子,将他们放进栈中,左边走到尽头,出栈,root变为栈顶元素,存值,向右边走一个 再次遍历左孩子,将他们放入栈中,如果没有左孩子了,就出栈,root变为栈顶…

网页能做二维码吗?1分钟学会链接转码的方法

想要将链接做成二维码图片,让他人通过扫码跳转链接以提高网页的传播性,是现在很常用的一种手段。主要在于二维码是现在最常用的一种展现方式,更加符合现在人的行为习惯,那么网址二维码该如何操作呢?今天小编给大家讲解…

网络层协议-IP协议

目录 基本概念IP协议格式分片与组装分片组装 网段划分特殊的IP地址IP地址的数量限制私有IP地址和公网IP地址路由 基本概念 TCP作为传输层控制协议,其保证的是数据传输的可靠性和传输效率,但TCP提供的仅仅是数据传输的策略,而真正负责数据在网…

DCGAN 使用指南:将卷积神经网络和对抗网络结合,适用于生成小尺寸的图像

DCGAN 使用指南:将卷积神经网络和对抗网络结合 网络结构细节设计 论文地址:https://arxiv.org/abs/1511.06434 项目代码:https://github.com/tensorlayer/DCGAN.git DCGAN 适用于生成小尺寸的图像,并且具有简单易用的优势 Styl…

了解HashMap底层数据结构吗

程序员的公众号:源1024,获取更多资料,无加密无套路! 最近整理了一份大厂面试资料《史上最全大厂面试题》,Springboot、微服务、算法、数据结构、Zookeeper、Mybatis、Dubbo、linux、Kafka、Elasticsearch、数据库等等 …

Spark将execl表格文件导入到mysql中

实现代码 excel所需的pom依赖 案例实现 实现代码 package excel_mysqlimport org.apache.spark.sql.SparkSession import java.util.Propertiesobject t1 {def main(args: Array[String]): Unit {val spark SparkSession.builder().appName("ExcelToMySQL") /…

视频剪辑技巧:批量剪辑新思路,AI智剪来助阵

在视频制作过程中,剪辑是一项至关重要的任务。然而,对于许多创作者来说,批量剪辑视频是一项耗时且繁琐的工作。传统的批量剪辑方法通常要创作者逐个打开视频文件,进行剪辑、调整色彩等操作。这种方法不仅效率低下,而且…

zookeeper集群(很少用)+kafka集群(常用)

一、zookeeper zookeeperkafka(2.7.0版本) kafka(3.4.1版本)不依赖于zookeeper 1、定义:zookeeper开源,分布式架构,提供协调服务(Apache项目),基于观察者模…

spring security 艰苦学习中

一、初次感知 1.jwt工具类 密钥secret 有点意思。 2.PasswordEncoder 对密码进行加密,在配置类中返回bean. 下面这个关于加密和解密的东西是有误导性的。