已调通,可直接在python2使用
1.录制鼠标过程源代码,按esc键结束录制,最后保存在commands.json文件中
2.执行上面代码得到的commands.json文件,运行程序,输入文件绝对路径或者文件名,输入文件名则搜索当前程序下的目录文件

录制鼠标过程源代码,按esc键结束录制,最后保存在commands.json文件中:

# -*- coding:utf-8 -*-
#一个记录用户操作,并保存到json文件的程序import time    #用于记录每一项操作的时间
import json    #用于保存导出我们记录的操作
import threading    #由于键盘和鼠标事件的监听都是阻塞的,所以用两个线程实现
import pynput    #用于记录用户事件
command_list=[]    #用来存储用户的操作
isRunning=True    #是否在运行,用于实现在按esc后退出的功能
startTime=0    #开始时间,会在之后main函数中进行初始化
def on_key_press(key):    #当按键按下时记录if key==pynput.keyboard.Key.esc:    #如果是escglobal isRunningisRunning=False    #通知监听鼠标的线程mouse=pynput.mouse.Controller()    #获取鼠标的控制器mouse.click(pynput.mouse.Button.left)    #通过模拟点击鼠标以执行鼠标的线程,然后退出监听.return False    #监听函数return False表示退出监听12command_list.append(("press",    #操作模式(str(key).strip("'"),),    #具体按下的键,传进来的参数并不是一个字符串,而是一个对象,如果按下的是普通的键,会记录下键对应的字符,否则会使一个"Key.xx"的字符串time.time()-startTime    #操作距离程序开始运行的秒数))
def on_key_release(key):    #但按键松开时记录command_list.append(("release",    #操作模式(str(key).strip("'"),),    #键信息,参见on_key_press中的相同部分time.time()-startTime    #操作距离程序开始运行的秒数))
def on_mouse_click(x,y,button,pressed):if not isRunning:    #如果已经不在运行了return False    #退出监听if not pressed:    #如果是松开事件return True    #不记录command_list.append(("click",    #操作模式(x,y,str(button)),    #分别是鼠标的坐标和按下的按键time.time()-startTime    #操作距离程序开始运行的秒数))
def start_key_listen():    #用于开始按键的监听# 进行监听with pynput.keyboard.Listener(on_press=on_key_press,on_release=on_key_release) as listener:listener.join()def start_mouse_listen():    #用于开始鼠标的监听# 进行监听with pynput.mouse.Listener(on_click=on_mouse_click) as listener:listener.join()def toFile(command_list,path):    #保存为文件,参数分别为操作记录和保存位置with open(path,"w") as f:f.write(json.dumps(command_list))    #使用json格式写入def main():    #主函数global startTimestartTime=time.time()    #初始化开始时间key_listen_thread=threading.Thread(target=start_key_listen)    #创建用于监听按键的线程mouse_listen_thread=threading.Thread(target=start_mouse_listen)    #创建用于监听鼠标的线程#运行线程key_listen_thread.start()mouse_listen_thread.start()#等待线程结束,也就是等待用户按下esckey_listen_thread.join()mouse_listen_thread.join()#保存文件toFile(command_list,"./commands.json")if __name__=="__main__":main()

操作还原功能:

# -*- coding:utf-8 -*-
# 一个运行使用"记录宏.py"记录的json的程序
import os  # 用于文件操作
import json  # 用于记录下来的操作
import time  # 用于按照记录下来的时间间隔操作
import pynput  # 用于模拟鼠标键盘操作def unicode_convert(input_data):#将unicode转换成strif isinstance(input_data, dict):return {unicode_convert(key): unicode_convert(value) for key, value in input_data.iteritems()}elif isinstance(input_data, list):return [unicode_convert(element) for element in input_data]elif isinstance(input_data, unicode):return input_data.encode('utf-8')else:return input_datadef ExecuteCommandsFile(path):# 如果命令行传入了参数,则使用命令行参数,否则提示用户输入,此变量表示操作记录文件的路径# 第二个不是:,也就代表路径是相对路径path = unicode_convert(path)if path[2] != ":":# 将其解析为从本文件开始的路径path = os.path.join(os.path.dirname(__file__), path)# 打开文件with open(path) as f:# 将记录的命令写入命令列表command_list = json.loads(f.read())command_list = unicode_convert(command_list)# 创建鼠标和键盘的执行器,用于模拟键盘和鼠标的操作mouse = pynput.mouse.Controller()keyboard = pynput.keyboard.Controller()# 鼠标的两个按钮buttons = {"Button.left": pynput.mouse.Button.left,"Button.right": pynput.mouse.Button.right}# 开始后已经经过的时间sTime = 0# 执行每一条记录for command in command_list:# 如果是点击记录print(command[0])print(command[1])#print(command[1][2])print(command[2])if command[0] == "click":# 将鼠标移动到记录中的位置mouse.position = (command[1][0], command[1][1])# 等待一下time.sleep(0.1)# 点击mouse.click(buttons[command[1][2]])# 如果是按键按下elif command[0] == "press":# 如果是特殊按键,会记录成Key.xxx,这里判断是不是特殊按键if command[1][0][:3] == "Key":# 按下按键keyboard.press(eval(command[1][0], {}, {"Key": pynput.keyboard.Key}))else:# 如果是普通按键,直接按下if "<255>" == command[1][0]:continueprint(command[1][0])print(command[1][0].split("'")[1])keyboard.press(command[1][0].split("'")[1])# 如果是按键释放elif command[0] == "release":# 如果是特殊按键if command[1][0][:3] == "Key":# 按下按键keyboard.release(eval(command[1][0], {}, {"Key": pynput.keyboard.Key}))else:# 普通按键直接按下if "<255>" == command[1][0]:continueprint(command[1][0])print(command[1][0].split("'")[1])keyboard.release(command[1][0].split("'")[1])# command[2]代表此操作距离开始操作所经过的时间,用它减去已经经过的时间就是距离下一次操作的时间time.sleep(command[2] - sTime)# 更新时间sTime = command[2]if __name__=="__main__":#path = raw_input("请输入操作记录文件路径(相对路径从本文件位置开始)")path = 'StartUeMonitor.json'ExecuteCommandsFile(path)

python2鼠标键盘录制功能以及还原操作功能相关推荐

  1. python截图工具和模拟鼠标键盘_python PyAutoGUI 模拟鼠标键盘操作和截屏功能

    简介 一款跨平台/无依赖的自动化测试工具,目测只能控制鼠标/键盘/获取屏幕尺寸/弹出消息框/截屏. 安装 pip install pyautogui 鼠标键盘控制 >>> impor ...

  2. 鼠标键盘 录制 可编程宏 /回放 工具 Macro Recorder 汉化 破解 优化

    经常需要操作一些简单重复的工作 比如 就需要一些工具来做这些重复的工作来减轻工作量 鼠标键盘录制回放工具 用过很多  都不太理想 (Mouse Recorder 没有相应热键, 速度可调)(Pulov ...

  3. c语言编写的鼠标键盘录制程序,用C语言写的鼠标驱动程序

    vcok.com #include #include #include #include #include #include "graphics.h" #define R 15 / ...

  4. python 鼠标轨迹录制_按键鼠标轨迹录制大师

    专业高效的Windows鼠标键盘录制工具 一切只为提升效率,专注专业 http://mouse.downjia.com/ 智能操作 让乏味的重复的操作变的简单,有趣,精彩..... 操作技术 简单高效 ...

  5. DM816X 实现 USB HID Gadget 鼠标键盘功能

    DM816X 实现 USB HID Gadget 鼠标键盘功能 开发环境: 平台: DM8168 内核 :linux 2.6.32 RDK:DVRRDK_04.00.00.03 USB口:DM8168 ...

  6. 一套鼠标键盘控制多台电脑,无界鼠标 (Mouse without Borders)控制界面的功能翻译

    一套鼠标键盘控制多台电脑,无界鼠标 (Mouse without Borders)控制界面的功能翻译: 易君对英语一窍不通 今天在网上找了很久 无界鼠标的使用安装教程倒是很多 但没有完整的功能界面翻译 ...

  7. python实现按键精灵的功能_利用Python实现Windows下的鼠标键盘模拟的实例代码

    本文介绍了利用Python实现Windows下的鼠标键盘模拟的实例代码,分享给大家 本来用按键精灵是可以实现我的需求,而且更简单,但既然学python ,就看一下呗. 依赖: pip install ...

  8. QT 录制鼠标键盘回放

    QT 录制鼠标键盘回放 前段时间因为朋友想要解放双手想要把一些操作录制回放 所以做了这个小项目 因为我目前运用的QT只能在程序中去记录鼠标跟键盘的操作 所以网上找了找方法 有钩子函数使用 所以运用了钩 ...

  9. python3实现鼠标键盘动作录制,并还原执行过程

    这里写自定义目录标题 1.录制鼠标过程源代码,按esc键结束录制,最后保存在commands.json文件中 2.执行上面代码得到的commands.json文件,运行程序,输入文件绝对路径或者文件名 ...

最新文章

  1. JAVA多线程之Synchronized、wait、notify实例讲解
  2. android 缓存文件目录在哪个文件夹里,Android 文件目录存储介绍 缓存目录 | 私有目录 | 系统根目录 | 用户可见目录...
  3. python北京理工大学推荐的书-2020最新的学Python编程的五本必读好书
  4. 【Linux 内核 内存管理】Linux 内核堆内存管理 ② ( 动态分配堆内存方式 | brk 系统调用 | mmap 系统调用 | brk 系统调用源码介绍 )
  5. ABAP检查日期and时间合法性的函数
  6. 每天读5分钟,受益匪浅、
  7. 20线程测试cpu性能软件,评测平台介绍、CPU多线程性能测试
  8. [react-router] React-Router的路由有几种模式?
  9. centos 怎样下载php,centos下怎样安装软件
  10. 开源的 Snort 入侵检测系统中存在高危漏洞
  11. Icarus主题美化
  12. 2022电子邮箱大全,国内企业邮箱注册大全有哪些?
  13. 平面设计学习需要会哪些知识
  14. springboot+二手车交易系统 毕业设计-附源码131456
  15. JAVA经典算法40题(供面试所用)
  16. 基于python SMTP实现自动发送邮件教程解析
  17. Html监听Fbx文件加载,Three.js 导入fbx
  18. visual studio code教程
  19. 系统集成项目管理工程师好考吗?有什么用?
  20. CSS相关知识【黑马程序员前端】

热门文章

  1. 开发Go语言IDE推荐
  2. python爬虫表格中清除空格_Pandas中如何去掉空格
  3. 论文阅读 [TPAMI-2022] Incremental Density-Based Clustering on Multicore Processors
  4. 数据结构算法实现-顺序表基本操作
  5. 数据结构与算法之解析之路
  6. vite+vue3+ts框架搭建问题记录
  7. 使用 javax.mail 发送邮件
  8. 图扑软件智慧风电:数字孪生 3D 风机智能设备运维
  9. MSP432库函数学习笔记-CS
  10. 打字游戏之游戏难度调节