Python 技术篇-基于PyHook3+threading多线程实现鼠标单击事件和双击事件的识别实例演示
这里我设定了一个变量 time_k 和 1 秒的多线程延迟变量来控制。
# -*- coding: UTF8 -*-import PyHook3
import pythoncom
import threadingtime_k = 0;def execute_script(time_k_old, action):'''作用:执行脚本'''try:global time_kif(time_k ==1):print(action + "单击动作")elif(time_k == 2):print(action + "双击动作")except Exception as e:print(e)time_k = 0;# 监听到鼠标事件调用
def onMouseEvent(event):global mglobal time_k;try:if(event.MessageName != "mouse move" and (event.MessageName == "mouse left up" or event.MessageName == "mouse right up")): # 因为鼠标一动就会有很多mouse move,所以把这个过滤下,鼠标按下和抬起都会有记录,这里我们把抬起down操作过滤掉action = "" # 记录左键还是右键点击if("right" in event.MessageName):action = "右键"elif("left" in event.MessageName):action = "左键"if(time_k == 0):time_k = 1;# 设定1秒后延迟执行threading.Timer(1, execute_script, (time_k, action)).start()elif(time_k == 1):time_k = 2;elif(time_k == 2):return Falsereturn True # 为True才会正常调用,如果为False的话,此次事件被拦截except Exception as e:print(e)# 监听到键盘事件调用
def onKeyboardEvent(event):# print(event.Key) # 返回按下的键return Truedef main():# 创建管理器hm = PyHook3.HookManager()# 监听键盘hm.KeyDown = onKeyboardEvent hm.HookKeyboard() # 监听鼠标 hm.MouseAll = onMouseEvent hm.HookMouse()# 循环监听pythoncom.PumpMessages() if __name__ == "__main__":main()
效果图如下:
喜欢的点个赞❤吧!
Python 技术篇-基于PyHook3+threading多线程实现鼠标单击事件和双击事件的识别实例演示相关推荐
- Python 技术篇 - 使用unicode_escape对js的escape()方法编码后的字符串进行解码实例演示
这是 javascript 的 escape() 编码后的效果. 这是 python 的解码过程: xpath = '%f%t%u90E8%u95E8%u6210%u7ACB%u65F6%u95F4% ...
- Python 技术篇-用win32库实现读取、添加、修改注册表的值实例演示
注册表编辑器里默认有这 5 个根目录,每个目录的说明如下: # -*- coding: UTF8 -*- # 日期:2020.12.15 # 作者:小蓝枣import win32api import ...
- Python 技术篇-用imageio库实现图片转gif动画,Gif录制屏幕操作实例演示
我们需要用到 imageio 库,直接pip install imageio就安装了. 原理就是把很多个图片在规定时间内依次展示,就变为我们所见到的动画样式了. 收集素材 利用 PIL 的截图功能,每 ...
- Python模块学习:threading 多线程控制和处理
Reference:http://python.jobbole.com/81546/ threading.Thread Thread 是threading模块中最重要的类之一,可以使用它来创建线程.有 ...
- python postmessage_解惑:Postmessage函数模拟鼠标单击指定坐标
首先,我不是刻意去学习Postmessage函数,也不愿意花费很多经历去研究API.但是为了完善自己的知识和体现域学式的学习方法,顺便研究了一下这个函数. 网上有很多关于Postmessage发送消息 ...
- python Pyqt5 QLabel控件 自定义添加鼠标单击信号/事件 双击信号/事件
直接上代码: from PyQt5.QtWidgets import QLabel from PyQt5.QtCore import pyqtSignalclass MyQLabel(QLabel): ...
- vue中鼠标单击事件与双击事件 的绑定 以及修饰符
一.点击:双击:鼠标事件 给某个元素添加点击事件时,在click属性前加"v-on:或@",属性值为点击事件方法.相应的点击事件方法仍然存放于methods当中. 双击事件,将cl ...
- python 主线程_Python threading多线程模块
Python是支持使用多线程的,程序代码可以在一个进程空间中操作管理多个执行的线程,python模块下载时要记得,这个库叫做 threading. 一.threading模块简介 在Python多线程 ...
- Python 技术篇-基于随机数的uuid码的生成
我们做数据库的数据一般需要为每个数据准备能唯一表示这条数据的主键了,而又不能从像数数一样从 1 向后排,这样数据的安全性是没有保障的,这样看来 uuid 是最好的选择了,32 位的随机数自动生成,想重 ...
最新文章
- 浅入浅出 Android 安全:第三章 Android 本地用户空间层安全
- 132.非对称加密?数据安全的特征?
- 路径总和Python解法
- jsp实现数据禁用和只读
- 刹车时到底要不要踩离合器?
- C# 使用PrintDocument类打印标签
- [毕业生的商业软件开发之路]解决方案资源管理器
- 数据库-如何快速创建连接字符串
- 轻量级自适应个人自动发卡源码全开源 附详细图文安装教程
- native内存泄漏分析
- 百度 LBS 开放平台,开发人员众測计划正式启动
- java.lang.Integer常用方法
- 为什么企业需要CRM系统?CRM的作用及其重要性分析
- 2021.12.15.梦开始的地方.
- 前端笔记—从入门到坟墓[网站基础与优化][12.1]
- 鸿蒙系统能玩魔兽世界吗,魔兽世界:永久60级与TBC该怎么选,60级服务器真的会有玩家么?...
- 媒体观察:08年度十大硬件新闻
- [国家集训队2012]电子对撞机nbsp;解题…
- Ubuntu20系统重装/修复
- Namesilo域名注册购买教程
热门文章
- AOP基本概念、AOP底层实现原理、AOP经典应用【事务管理、异常日志处理、方法审计】...
- |Vijos|树状数组|P1512 SuperBrother打鼹鼠
- linux/android 脚本相关
- 不管服不服 Windows仍是全球第一大桌面系统
- 关于“心脏出血”漏洞(heartbleed)的理解
- 华为如何打造智能终端的有趣灵魂?(下)
- 让Redis突破内存大小的限制
- Asp.net core使用IIS在windows上进行托管
- 微信非80端口网页授权
- Android学习笔记---后台运行方法