当前位置: 首页 > news >正文

python录制鼠标键盘操作循环播放

依赖

pip install pynput

程序:

from pynput import mouse, keyboard
import time
import threading# 用于存储录制的鼠标和键盘事件
mouse_events = []
keyboard_events = []# 定义事件处理函数# 处理鼠标事件
def on_move(x, y):mouse_events.append(('move', x, y))def on_click(x, y, button, pressed):mouse_events.append(('click', x, y, button, pressed))def on_scroll(x, y, dx, dy):mouse_events.append(('scroll', x, y, dx, dy))# 处理键盘事件
def on_press(key):try:keyboard_events.append(('press', key.char))except AttributeError:keyboard_events.append(('press', str(key)))def on_release(key):try:keyboard_events.append(('release', key.char))except AttributeError:keyboard_events.append(('release', str(key)))# 按下 Esc 键时停止监听if key == keyboard.Key.esc:return False# 启动监听线程
def start_listening():# 启动鼠标和键盘的监听器mouse_listener = mouse.Listener(on_move=on_move, on_click=on_click, on_scroll=on_scroll)keyboard_listener = keyboard.Listener(on_press=on_press, on_release=on_release)mouse_listener.start()keyboard_listener.start()# 等待监听器结束mouse_listener.join()keyboard_listener.join()# 执行录制的操作
def replay_events():print("Replaying events...")for event in mouse_events:if event[0] == 'move':print(f"Moving mouse to {event[1]}, {event[2]}")# 在这里可以使用 `pyautogui.moveTo(x, y)` 等模拟鼠标移动elif event[0] == 'click':print(f"Clicking at {event[1]}, {event[2]} with button {event[3]} - {event[4]}")# 在这里可以使用 `pyautogui.click(x, y)` 等模拟鼠标点击elif event[0] == 'scroll':print(f"Scrolling at {event[1]}, {event[2]} with dx={event[3]} dy={event[4]}")# 在这里可以使用 `pyautogui.scroll(dx, dy)` 等模拟鼠标滚动for event in keyboard_events:if event[0] == 'press':print(f"Pressing key {event[1]}")# 在这里可以使用 `pyautogui.write()` 等模拟键盘按键elif event[0] == 'release':print(f"Releasing key {event[1]}")# 在这里可以模拟按键松开print("Replay finished.")# 主程序
def main():print("Recording started, press 'Esc' key to stop recording.")# 启动监听线程listener_thread = threading.Thread(target=start_listening)listener_thread.start()# 等待用户按下 'Esc' 键结束录制listener_thread.join()# 录制结束后执行录制的操作replay_events()# 循环执行while True:print("Replaying recorded events...")replay_events()time.sleep(2)  # 延时 2 秒后重新执行if __name__ == "__main__":main()
import pyautogui# 在回放中使用 pyautogui
pyautogui.moveTo(x, y)  # 模拟鼠标移动
pyautogui.click(x, y)  # 模拟鼠标点击
pyautogui.write('Hello')  # 模拟键盘输入

http://www.lryc.cn/news/499439.html

相关文章:

  • 标书里的“废标雷区”:你踩过几个?
  • centos下使用acme来自动获取免费通配符ssl证书,并发布到nginx服务,(DNS服务为阿里云)
  • 基于协同过滤的图书推荐系统 爬虫分析可视化【源码+文档】
  • Hyperf jsonrpc
  • 计算机毕业设计Spark股票推荐系统 股票预测系统 股票可视化 股票数据分析 量化交易系统 股票爬虫 股票K线图 大数据毕业设计 AI
  • Linux系统下安装配置 Nginx 超详细图文教程
  • 语言处理程序基础
  • golang实现简单的redis服务
  • QT QTableWidget::setModel”: 无法访问 private成员
  • STM32:Bootloader(AB备份,自动回滚)
  • 数独小游戏(Matlab)
  • 使用docker让项目持续开发和部署
  • 电子应用设计方案-45:智能火锅系统方案设计
  • windows在conda下安装nlpia库
  • 分布式事务的前世今生-纯理论
  • apache部署若依前后端分离项目(开启SSL)
  • Elasticsearch scroll 之滚动查询
  • MySQL 内存使用率常用分析语句
  • L20.【LeetCode笔记】用栈实现队列(方法2)(★详解★)
  • PR蒙太奇
  • 高中数学:计数原理-排列组合
  • pytorch中有哪些归一化的方式?
  • Next.js系统性教学:增量静态再生成 (ISR) 完全解析
  • 视频编辑技术的发展:AI技术在小咖视频混剪中的应用
  • 【JVM】JVM基础教程(一)
  • Python并发编程全解析
  • 大语言模型应用Text2SQL本地部署实践初探
  • 每日十题八股-2024年12月7日
  • VTK编程指南<三>:基于VTK入门程序解析来理解VTK基础知识
  • PyQt5快速开发与实战