编译 pywinhook v1.6.2 的环境设置和步骤

准备做一个鼠标事件响应程序。

查了一下相关python的第三方类库,发现有 pyhook。

一、起源 pyhook

1、pyhook是最早的版本

pyhook支持的python版本比较低,代码在 https://sourceforge.net/projects/pyhook/

2、之后产生了两个并行版本 pyHook3 和 pyWinhook

https://github.com/gggfreak2003/PyHook3

  • pyHook3 在6年前就已经不再更新,并在2020年将代码库设为 ReadOnly !

https://github.com/Tungsteno74/pyWinhook

  • pyhook 在 2017-03-9 入驻 github 后,发布了 1.5.2 版本后 并改名为 phWinHook;
  • 1.6.0 (2019-01-24) 支持 python 3.x;
  • 2020-01-17 发布了最新的版本 1.6.2;
  • 目前该项目保持活跃;

二、编译

直接从 pycharm 安装 pyHook3 / pyWinhook 不成功。
所以,从 sourceforge和 github 下载各个版本的代码,做了几次编译的尝试。

下面是成功编译 pyWinhook 的几种情况和步骤:

1、下载 swig

  • https://www.swig.org/download.html

2、设置环境变量

下载后,是一个zip文件,解压后放在没有空格和中文的路径下,比如 D:\programs\swig-4.1.1

  • 设置系统环境变量,将swig的路径加到路径下: PATH=$PATH;D:\programs\swig-4.1.1
    在这里插入图片描述

3、关闭所有 pycharm 项目,即重启pycharm

4、启动 pycharm 打开 pyWinhook项目

5、按 Alt + F12 启动终端

pip install pywin32

6、生成 pyd

python setup.py build_ext --inplace

phWinhook目录下生成 _cpyHook.cp38-win_amd64.pyd

7、生成 wheel

python setup.py bdist_wheel

dist目录下生成 pyWinhook-1.6.2-cp38-cp38-win_amd64.whl

8、安装 wheel

pip install  pyWinhook-1.6.2-cp38-cp38-win_amd64.whl

三、直接下载使用

1、在设置了 swig 环境变量后,重新启动 pycharm

2、直接在 requirements.txt 中填写 pywin32pyWinhook

3、执行 pip install -r requirements.txt 或者

4、按 Ctrl + Alt + S 进入 Project: MyProject --> python interpreter 中手动添加。

四、直接下载 wheel

1、下载地址

https://www.lfd.uci.edu/~gohlke/pythonlibs/

在这里插入图片描述

2、安装

pip install  pyWinhook-1.6.2-cp38-cp38-win_amd64.whl

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

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

相关文章

来聊聊Spring的循环依赖

文章目录 首先了解一下什么是循环依赖简述解决循环依赖全过程通过debug了解Spring解决循环依赖全过程Aservice的创建递归来到Bservice的创建然后BService递归回到了getAservice的doGetBean中故事再次回到Aservice填充BService的步骤 总结成流程图为什么二级就能解决循环依赖问题…

【Qt开发流程】之UDP

概述 UDP (User Datagram Protocol)是一种简单的传输层协议。与TCP不同,UDP不提供可靠的数据传输和错误检测机制。UDP主要用于那些对实时性要求较高、对数据传输可靠性要求较低的应用,如音频、视频、实时游戏等。 UDP使用无连接的数据报传输模式。在传…

如何实现订单自动取消

由于Redis具有过期监听的功能,于是就有人拿它来实现订单超时自动关闭的功能,但是这个方案并不完美。今天来聊聊11种实现订单超时自动关闭的方案,总有一种适合你!这些方案并没有绝对的好坏之分,只是适用场景的不大相同。…

图的搜索(二):贝尔曼-福特算法、狄克斯特拉算法和A*算法

图的搜索(二):贝尔曼-福特算法、狄克斯特拉算法和A*算法 贝尔曼-福特算法 贝尔曼-福特(Bellman-Ford)算法是一种在图中求解最短路径问题的算法。最短路径问题就是在加权图指定了起点和终点的前提下,寻找从…

Vue3使用了Vite和UnoCSS导致前端项目启动报错:Error:EMFILE:too many open files

一个 Vue3 的项目,用的是 Vite 打包,通过 npm run dev 运行时,遇到了以下错误(尤其是引入了 Element-Plus 后): Error: EMFILE: too many open files,后面是具体的文件路径。。甚至到了 node_mo…

5G工业物联网网关,比4G工业网关强在哪里?

​随着5G技术的广泛应用,越来越多的行业开始探索如何利用5G网络提升效率和创新能力。其中,工业物联网领域是受益最大的领域之一。作为连接物联网设备和网络的关键组件,5G工业物联网网关在这个变革中发挥着至关重要的作用。本文将深入探讨5G工…

指针进阶篇

指针的基本概念: 指针是一个变量,对应内存中唯一的一个地址指针在32位平台下的大小是4字节,在64位平台下是8字节指针是有类型的,指针类型决定该指针的步长,即走一步是多长指针运算:指针-指针表示的是两个指…

赛氪为第五届全球校园人工智能算法精英大赛决赛选手保驾护航

12月10日,以“智青春算未来”为主题的2023年第五届全球校园人工智能算法精英大赛全国总决赛在河海大学江宁校区举行。本次大赛由江苏省人工智能学会主办,自9月份启动以来,共吸引了全国近400所高校的3000多支参赛团队参加。经过校赛、省赛选拔…

nlp与cv的发展

Transformer的出现,促进了更高容量模型的建立,为大模型的出现奠定基础. 🧐大模型通常具有十亿个以上参数(仅供参考) 😮左边的蓝色是CV领域、右下绿色是NLP、右上蓝色是多模态😃基础模型(Foundational Models)首次由Bommasani等人在《Stanford…

HTTP代理服务器脚本录制

1、报错1 target controller is configured to “use recording Controller“ but no such controller exists,ensure_target controller is configured to "use recording -CSDN博客

等等Domino 14.0FP1

大家好,才是真的好。 节奏确实太快了,有时候我深感我也追不上。 以前Notes Domino是三年磨一剑,也就说每三年才发一个大版本,从2019年开始,进行了高频提速,居然一年一个大版本! 周末&#xf…

NAT——网络地址转换

目录 一、概念 二、NAT的分类 1.静态NAT 1.1 静态NAT的配置 1.2 利用eNSP小实验加强对静态NAT的理解 2、动态NAT 三、NAPT——端口映射 四、Easy IP 使用一个公网地址可以让所有人都上公网 一、概念 随着Internet的发展和网络应用的增多,IPv4地址枯竭已经成为…

jmeter 如何循环使用接口返回的多值?

有同学在用jmeter做接口测试的时候,经常会遇到这样一种情况: 就是一个接口请求返回了多个值,然后下一个接口想循环使用前一个接口的返回值。 这种要怎么做呢? 有一定基础的人,可能第一反应就是先提取前一个接口返回…

在Node.js中MongoDB排序的方法

本文主要介绍在Node.js中MongoDB排序的方法。 目录 Node.js中MongoDB排序使用原生的mongodb驱动程序进行排序使用Mongoose库中的排序 Node.js中MongoDB排序 在Node.js中使用MongoDB进行排序,可以使用原生的mongodb驱动程序或者Mongoose库。 使用原生的mongodb驱动…

改进lora-scripts,支持SDXL训练,以及启动脚本

分享下自己改进的一个lora训练脚本,在ubuntu下如果SD-WEBUI的环境已经搭好的话,只需要下载lora-script就可以支持训练了,直接命令行方式训练。 首先,我们需要克隆下项目: git clone https://github.com/Akegarasu/lo…

黑色翻页时钟HTML源码-倒计时单页翻页时钟

黑色翻页时钟HTML源码-倒计时单页翻页时钟这是一个类似fliqlo的黑色翻页时钟HTML源码,它仅包含一个HTML文件,上传到网站后即可使用。该时钟具有查看当前时间、秒表和倒计时功能,并且可以在页面的右下角进行设置。 红色动态炫酷数字时钟html网…

【已解决】在使用poi-tl生成的word文档时候,怎么添加目录?poi-tl生成目录解决办法

需求: 需求的报告模板中大概包括标题、目录、前言、章节(根据模板动态生成的标题文字表格图片),其中目录需要根据章节的实际情况动态生成。在网上没有找到什么好的解决方案,请教一下实现思路,非常感谢。 …

MATLAB 计算两片点云间的最小距离(2种方法) (39)

MATLAB 计算两片点云间的最小距离 (39) 一、算法介绍二、算法实现1.常规计算方法2.基于KD树的快速计算一、算法介绍 假设我们现在有两片点云 1 和 2 ,需要计算二者之间的最小距离,这里提供两种计算方法,分别是常规计算和基于KD树近邻搜索的快速计算方法,使用的测试数据如…

为什么选择国产WordPress:HelpLook的优势解析

如今网站建设可以说已经是企业必备。而在众多的网站建设工具中,WordPress无疑是其中的佼佼者。作为一款开源的CMS(内容管理系统),WordPress拥有丰富的插件和主题,以及强大的功能,使得用户可以轻松地构建出符…

vivado约束方法8

无交互的逻辑互斥时钟组 逻辑排他性时钟是指在不同源点上定义但共享部分的时钟由于多路复用器或其他组合逻辑,它们的时钟树。时间限制向导识别此类时钟,并建议在它们这样做时直接对其进行时钟组约束除了连接到其共享时钟的逻辑之外,彼此之间…