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


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

    1. from pynput import mouse, keyboard
    2. def on_mouse_move(x, y):
    3. print(f'鼠标移动到位置: ({x}, {y})')
    4. def on_mouse_click(x, y, button, pressed):
    5. if pressed:
    6. print(f'{button} 按下于位置: ({x}, {y})')
    7. else:
    8. print(f'{button} 释放于位置: ({x}, {y})')
    9. def on_mouse_scroll(x, y, dx, dy):
    10. # dx 和 dy 表示滚动的水平方向和垂直方向的量
    11. # 在大多数鼠标上,只有 dy 会变化,表示垂直滚动
    12. print(f'Scrolled at {x}, {y} ({dx}, {dy})')
    13. def on_key_press(key):
    14. try:
    15. print(f'{key.char} 被按下')
    16. except AttributeError:
    17. print(f'{key} 被按下')
    18. def on_key_release(key):
    19. try:
    20. if key == keyboard.Key.esc:
    21. print('结束监听,退出!')
    22. keyboard_listener.stop()
    23. mouse_listener.stop()
    24. else :
    25. print(f'{key.char} 被释放')
    26. except AttributeError:
    27. print(f'{key} 被释放')
    28. # 创建鼠标监听器
    29. mouse_listener = mouse.Listener(on_move=on_mouse_move, on_click=on_mouse_click,on_scroll=on_mouse_scroll)
    30. mouse_listener.start()
    31. # 创建键盘监听器,同时监听按下和释放事件
    32. keyboard_listener = keyboard.Listener(on_press=on_key_press, on_release=on_key_release)
    33. keyboard_listener.start()
    34. # 等待监听器运行,直到用户手动停止
    35. try:
    36. mouse_listener.join()
    37. keyboard_listener.join()
    38. except KeyboardInterrupt:
    39. pass # 捕获 Ctrl+C 来停止监听器
    40. finally:
    41. # 停止监听器
    42. mouse_listener.stop()
    43. 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() 来停止监听器。

    功能说明:

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

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

  • 相关阅读:
    QtCreator5.15.0编译全过程记录
    有成效的工作
    5分钟了解LangChain的路由链
    解析java中的文件字符输出流
    Win11如何开启剪贴板自动复制?Win11开启剪贴板自动复制的方法
    【JavaScript】五个常用功能/案例:判断特定结尾字符串 | 获取指定字符串 | 颜色字符串转换 | 字符串转驼峰格式 | 简易购物车
    干货分享 | TSMaster几种过滤器的对比及使用
    优诺服饰用户服务升级 携手高端百货打造衣物深度护理SPA站
    如何将本地项目上传到github上
    利用Font Awesome图标库为自己的网站页面添加矢量图标
  • 原文地址:https://blog.csdn.net/qq_26043945/article/details/136741968