Python使用pynput模块后台监控鼠标及按键

Pynput 是一个 Python 第三方库,它提供了监听和控制键盘和鼠标事件的功能。使用 pynput,我们可以编写自动化脚本,监控输入设备的活动,或者实现一些与键盘和鼠标相关的功能。

python 复制代码
from pynput import mouse, keyboard  
  
def on_mouse_move(x, y):  
    print(f'鼠标移动到位置: ({x}, {y})')  
  
def on_mouse_click(x, y, button, pressed):  
    if pressed:  
        print(f'{button} 按下于位置: ({x}, {y})')  
    else:  
        print(f'{button} 释放于位置: ({x}, {y})')  
def on_mouse_scroll(x, y, dx, dy):
    # dx 和 dy 表示滚动的水平方向和垂直方向的量  
    # 在大多数鼠标上,只有 dy 会变化,表示垂直滚动  
    print(f'Scrolled at {x}, {y} ({dx}, {dy})')  


def on_key_press(key):  
    try:  
        print(f'{key.char} 被按下')  
    except AttributeError:  
        print(f'{key} 被按下')  
  
def on_key_release(key):  
    try:  
        if key == keyboard.Key.esc:
            print('结束监听,退出!')
            keyboard_listener.stop()
            mouse_listener.stop()
        else :
            print(f'{key.char} 被释放')  
    except AttributeError:  
        print(f'{key} 被释放')  
  
# 创建鼠标监听器  
mouse_listener = mouse.Listener(on_move=on_mouse_move, on_click=on_mouse_click,on_scroll=on_mouse_scroll)  
mouse_listener.start()  
  
# 创建键盘监听器,同时监听按下和释放事件  
keyboard_listener = keyboard.Listener(on_press=on_key_press, on_release=on_key_release)  
keyboard_listener.start()  
  
# 等待监听器运行,直到用户手动停止  
try:  
    mouse_listener.join()  
    keyboard_listener.join()  
except KeyboardInterrupt:  
    pass  # 捕获 Ctrl+C 来停止监听器  
finally:  
    # 停止监听器  
    mouse_listener.stop()  
    keyboard_listener.stop()

这段代码使用了 pynput 库来监听鼠标和键盘事件。pynput 是一个用于控制和监控输入设备的Python库,它允许用户监听鼠标和键盘事件,以及发送鼠标和键盘命令。

代码结构:

  1. 导入模块 :from pynput import mouse, keyboard 导入 pynput 库中的 mouse 和 keyboard 模块。

  2. 定义鼠标事件处理函数:

    • on_mouse_move(x, y):当鼠标移动时调用,打印鼠标的当前位置。
    • on_mouse_click(x, y, button, pressed):当鼠标按键被按下或释放时调用,根据 pressed 参数的值打印鼠标按键的状态(按下或释放)以及位置。
  3. 定义键盘事件处理函数:

    • on_key_press(key):当键盘按键被按下时调用,尝试打印按键的字符表示(如果有的话),否则打印按键本身。
    • on_key_release(key):当键盘按键被释放时调用,行为类似于 on_key_press,但针对按键释放事件。
  4. 创建并启动鼠标监听器 :使用 mouse.Listener 创建一个鼠标监听器,并传入之前定义的鼠标事件处理函数。然后调用 start() 方法开始监听。

  5. 创建并启动键盘监听器 :使用 keyboard.Listener 创建一个键盘监听器,并传入之前定义的键盘事件处理函数。然后调用 start() 方法开始监听。

  6. 等待监听器运行 :使用 try...except...finally 语句块来确保监听器能够优雅地启动和停止。mouse_listener.join() 和 keyboard_listener.join() 会阻塞主线程,直到监听器停止。KeyboardInterrupt 异常用于捕获用户通过 Ctrl+C 发送的中断信号。

  7. 停止监听器 :在 finally 语句块中,无论是否发生异常,都会调用 mouse_listener.stop() 和 keyboard_listener.stop() 来停止监听器。

功能说明:

  • 当你移动鼠标时,会在控制台打印出鼠标的当前位置。
  • 当你按下或释放鼠标按键时,会在控制台打印出按键的状态(按下或释放)以及位置。
  • 当你按下或释放键盘按键时,会在控制台打印出按键的字符表示(如果有的话)或按键本身。

这段代码适用于需要监控鼠标和键盘输入的应用场景,例如自动化测试、用户行为分析、游戏脚本等。注意,在实际应用中,可能需要处理更多的异常和边界情况,以确保程序的健壮性。

相关推荐
张张123y4 小时前
后端第一课:输入 URL 后发生了什么?我用手写 Socket 把全链路跑通了
python·websocket·ai·socket·url·后端开发
白帽攻防录6 小时前
SRC 挖洞:PostScript 打印机驱动双 RCE,打印服务器怎么变成内网跳板
开发语言·网络安全·php·内网安全
十年Java程序媛6 小时前
Java枚举Enum完整教程|替代静态常量,开发与面试要点
java·开发语言·spring boot·后端·面试
全栈弄潮儿7 小时前
Python实战第7期:字典与集合
后端·python·编程语言
2603_965148117 小时前
电商选品调研:通过关键词搜索API获取市场热销商品,结合商品详情API分析竞品卖点与定价
开发语言·数据库·人工智能·python·信息可视化
xixiaoyunya7 小时前
Python 异步编程入门:用 asyncio 轻松实现并发任务
开发语言·python·php
把我格子衫拿来8 小时前
Dice 很高就够了吗?分割评价中的 IoU、表面距离与 HD95
python·图像分割·模型评估·医学影像·dice
学逆向的8 小时前
C 循环结构的执行效率分析
c语言·开发语言·数据结构·网络安全
曲径海盗8 小时前
【Python 学习第 31 天】复习:变量与数据类型 等 3 题
python·学习笔记·编程入门
Data_Journal8 小时前
如何绕过 Cloudflare:网页抓取的最佳方法
网络·python