Python 技术篇-基于PyHook3+threading多线程实现鼠标单击事件和双击事件的识别实例演示

简介: Python 技术篇-基于PyHook3+threading多线程实现鼠标单击事件和双击事件的识别实例演示

           

这里我设定了一个变量 time_k1 秒的多线程延迟变量来控制。

# -*- coding: UTF8 -*-
import PyHook3
import pythoncom
import threading
time_k = 0;
def execute_script(time_k_old, action):
    '''
     作用:执行脚本
    '''
    try:
        global time_k
        if(time_k ==1):
            print(action + "单击动作")
        elif(time_k == 2):
            print(action + "双击动作")
    except Exception as e:
        print(e)
    time_k = 0;
# 监听到鼠标事件调用
def onMouseEvent(event):
    global m
    global 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 False
        return True # 为True才会正常调用,如果为False的话,此次事件被拦截
    except Exception as e:
        print(e)
# 监听到键盘事件调用
def onKeyboardEvent(event):
    # print(event.Key)   # 返回按下的键
    return True
def main():
  # 创建管理器
    hm = PyHook3.HookManager()
    # 监听键盘
    hm.KeyDown = onKeyboardEvent   
    hm.HookKeyboard()  
    # 监听鼠标 
    hm.MouseAll = onMouseEvent   
    hm.HookMouse()
    # 循环监听
    pythoncom.PumpMessages() 
if __name__ == "__main__":
    main()

效果图如下:

image.png

喜欢的点个赞❤吧!

目录
相关文章
|
3天前
|
机器学习/深度学习 存储 监控
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
数据分享|Python卷积神经网络CNN身份识别图像处理在疫情防控下口罩识别、人脸识别
11 0
|
2天前
|
人工智能 安全 数据安全/隐私保护
Python中多种生成随机密码超实用实例
Python中多种生成随机密码超实用实例
8 0
|
2天前
|
人工智能 安全 Java
Python 多线程编程实战:threading 模块的最佳实践
Python 多线程编程实战:threading 模块的最佳实践
15 5
|
4天前
|
Java 数据库连接 数据处理
Python从入门到精通:3.1.2多线程与多进程编程
Python从入门到精通:3.1.2多线程与多进程编程
|
11天前
|
存储 机器学习/深度学习 数据可视化
Python面板时间序列数据预测:格兰杰因果关系检验Granger causality test药品销售实例与可视化
Python面板时间序列数据预测:格兰杰因果关系检验Granger causality test药品销售实例与可视化
57 6
|
11天前
|
机器学习/深度学习 数据可视化 算法
PYTHON用决策树分类预测糖尿病和可视化实例
PYTHON用决策树分类预测糖尿病和可视化实例
17 0
|
11天前
|
调度 Python
Python多线程、多进程与协程面试题解析
【4月更文挑战第14天】Python并发编程涉及多线程、多进程和协程。面试中,对这些概念的理解和应用是评估候选人的重要标准。本文介绍了它们的基础知识、常见问题和应对策略。多线程在同一进程中并发执行,多进程通过进程间通信实现并发,协程则使用`asyncio`进行轻量级线程控制。面试常遇到的问题包括并发并行混淆、GIL影响多线程性能、进程间通信不当和协程异步IO理解不清。要掌握并发模型,需明确其适用场景,理解GIL、进程间通信和协程调度机制。
28 0
|
19天前
|
存储 Java 数据库连接
java多线程之线程通信
java多线程之线程通信
|
30天前
|
存储 缓存 NoSQL
Redis单线程已经很快了6.0引入多线程
Redis单线程已经很快了6.0引入多线程
31 3
|
1月前
|
消息中间件 安全 Linux
线程同步与IPC:单进程多线程环境下的选择与权衡
线程同步与IPC:单进程多线程环境下的选择与权衡
64 0