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 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()

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

实验一 SAS 基本操作和数据表的导入 2023-11-29

一、上机目的 熟悉SAS的集成环境并掌握它的基本操作。理解SAS程序的结构,理解其中的过程,过程选项,语句,语句选项等概念,掌握SAS编程技术。 二、上机内容 主要有SAS操作界面、SAS窗口操作、SAS菜单操作、SAS按钮操作…

基于yolov2深度学习网络的打电话行为检测系统matlab仿真

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1、YOLOv2网络原理 4.2、基于YOLOv2的打电话行为检测 5.算法完整程序工程 1.算法运行效果图预览 2.算法运行软件版本 matlab2022a 3.部分核心程序 .................................…

python读取excel自动化生成sql建表语句和java实体类字段

1、首先准备一个excel文件: idtypenameidint学号namestring姓名ageint年龄sexstring性别weightdecimal(20,4)体重scoredecimal(20,4)分数 2、直接生成java字段和注释: import pandas as pddf pd.read_excel(test.xlsx, sheet_nameSheet1)for i in ran…

算法通关第十七关黄金挑战——透析跳跃问题

大家好,我是怒码少年小码。 本篇是贪心思想的跳跃问题专题,跳跃问题出现的频率很高。 跳跃游戏 LeetCode 55:给你一个非负整数数组 nums ,你最初位于数组的 第一个下标。数组中的每个元素代表你在该位置可以跳跃的最大长度。 …

Mac单独修改应用语言

方法1: 方法2: defaults write com.microsoft.Excel AppleLanguages ("zh-cn") defaults write com.microsoft.Word AppleLanguages ("zh-cn")参考:https://www.zhihu.com/question/24976020

【BUG合集】(一)①数据库存1/0,请求结果返回true和false;②sql查数据库能查,但mybatis查为空;③data64图片存储为异常;

前言 最近,在工作上接手的任务中,各种 bug 问题出现,在解决的同时也可以记录一下。因此,觉得可以出个记录 bug 合集。方便后来者碰到类似情况,可以作为一个参考进行解决。 文章题目就包含当前文章内容中所遇到的三个 b…

iMazing是什么软件?2024最新版本如何下载

iMazing是一款功能强大的iOS设备管理软件,它可以帮助用户备份和管理他们的iPhone、iPad或iPod Touch上的数据。除此之外,它还可以将备份数据转移到新的设备中、管理应用程序、导入和导出媒体文件等。本文将详细介绍iMazing的功能和安全性,并教…

算法通关村-----超大规模数据场景的问题

对20GB文件进行排序 问题描述 假设有一个20GB的文件,每行一个字符串,请说明如何对这个文件进行排序 问题分析 20GB的文件很难一次加载到内存中,可以采用分块策略,先使块内有序,在使块间有序。 实现思路 按照给定…

鸿蒙开发已成新趋势

随着华为鸿蒙操作系统的快速崭露头角,鸿蒙开发已然成为当前技术领域的热门新趋势。本文将深入探讨鸿蒙开发的重要性和独特优势,并详细介绍一些关键的鸿蒙开发技术和工具,以及它们对开发者个人和整个行业带来的深远影响。 首先,鸿蒙…

JOSEF约瑟 逆功率继电器 GG-21 5a 100v 50hz

系列型号 GG-21逆功率继电器 GG-22过载继电器 1 用途 逆功率继电器GG-21/5A/100V 在出现逆功率时,从电网中断开交流发电机。 2 概述 逆功率继电器是基于感应式原理(具有旋转磁场)而工作。 继电器导磁体由两个磁路系统组成:上磁路系统和下磁路系统…

ubuntu16.04部署gitlab-runner触发gitlab流水线

环境:ubuntu16.04 gitlab服务器:192.168.1.12 runner服务器:192.168.1.11 1.下载 环境:192.168.1.11 cd /usr/local/srcwget https://gitlab-runner-downloads.s3.amazonaws.com/latest/deb/gitlab-runner_amd64.debsudo dpkg …

2023.11.25 python常用数据集信息查看命令

2023.11.25 python常用数据集信息查看命令 在对数据集进行处理前一般需要对数据集先进行一个基本的观察,根据观察结果和经验确定处理方式。以kaggle员工离职数据集为例进行操作。 打印前5条数据 # 导入包 import pandas as pd# 读入数据 df pd.read_csv(HR_comm…

AIoT智能物联网平台技术架构参考

具体来说,AIoT平台能够实现智能终端设备之间、不同系统平台之间、不同应用场景之间的互融互通,进一步推动万物互联的进程。 AIoT智能物联网平台是结合了人工智能(AI)和物联网(IoT)技术的平台。它旨在通过物…

WS2812灯条基于WLED开源项目无门槛使用简介

WS2812灯条基于WLED开源项目无门槛使用简介 📌项目github地址:https://github.com/Aircoookie/WLED📍WLED详情地址:https://kno.wled.ge/🎈网页在线烧录固件地址:https://install.wled.me/ ✨ 仅作为使用的…

Python用itertools.product函数生成10位的0,1组合

需求:有10个指标,每个指标有0、1两种结果,生成所有可能出现的情况。解决:基于数学知识,我们很容易知道总共有组合数为2^101024种 那么使用python我们该如何用代码实现呢? python中的函数为itertools.produ…

初识向量数据库

背景 现在的数据分为20%的传统结构化数据,80%的非结构化数据 结构化数据:主要单元是数值与符号,数据类型高度抽象且易于组织。基于数值运算与关系代数,可以轻松地对结构化数据进行分析。 非结构化数据:常见的类型包括…

代理模式,dk动态代理,cglib动态代理

目录 一、代理模式1、生活中代理案例2、为什么要使用代理3、代理模式在Java中的应用4、什么是代理模式 二、代理的实现方式1、java中代理图示2、静态代理 三、动态代理1、概述2、JDK动态代理jdk动态代理原理分析 3、Cglib动态代理3.1 基本使用3.2 cglib基本原理 一、代理模式 …

常使用的定时任务

常使用的定时任务 一、 linux自带的定时任务 1、crontab 有这样一个需求:我们使用Java写一个工具jar包在系统空闲的时候去采集已经部署在Linux系统上的项目的一 些数据,可以使用 linux 系统的 crontab。 运行crontab -e,可以编辑定时器&…

ZFPlayer 播放视频的时候的视图层级

未播放的时候 首先看正常展示的时候,还没又开始播放 这个时候我们打开图层看一下,发现视频时长和播放按钮都是放在 视频封面图上的 播放的时候 我们看到的播放视频的画面 我们发现,我们之前在未播放状态看到的视图,仍然还在…

Git和Git小乌龟安装

目录 Git简介 Git安装 Git小乌龟简介 Git小乌龟安装 Git简介 Git是一个开源的分布式版本控制系统,可以有效、高速地进行从很小到非常大的项目的版本管理。它最初是由Linux Torvalds为了帮助管理Linux内核开发而开发的一个开放源码的版本控制软件。Git具有速度、…