在线时间:8:00-16:00
迪恩网络APP
随时随地掌握行业动态
扫描二维码
关注迪恩网络微信公众号
开源软件名称:taojy123/KeymouseGo开源软件地址:https://github.com/taojy123/KeymouseGo开源编程语言:Python 100.0%开源软件介绍:KeymouseGo v4.1功能:记录用户的鼠标键盘操作,通过触发按钮自动执行之前记录的操作,可设定执行的次数,可以理解为 用途:在进行某些操作简单、单调重复的工作时,使用本软件就可以很省力了。自己只要做一遍,然后接下来就让电脑来做。 该软件通过 关于作者:我是陶佳元,热爱代码,怀旧,在互联网上常用的 ID 有 taojy123 、tao.py。 我的个人站点 tslow.cn 整理并罗列了一些 你可以在 简书 浏览我最新发布的文章,还可以在 B站 观看我的技术分享和生活纪实。 我的邮箱: [email protected] 开源贡献者:如果您是开发爱好者,并对本项目感兴趣,欢迎参与项目的共同建设,您可以向本项目提交 Pull request 来贡献代码。 在此,特别感谢积极贡献者: Monomux 基本操作:1、点击 2、在计算机上进行任意操作,如点击鼠标、键盘输入,这部分的动作会被记录下来。 3、点击 4、点击 提示:1、可设置脚本重复执行的次数,如果为 2、默认启动热键为 3、录制时只记录鼠标点击动作和键盘动作,不记录鼠标移动轨迹。 4、每次录制结束后都会在 5、运行前可以在列表中选择一个需要执行的脚本。 6、 7、热键设置中的 8、由于程序速度受限,当输入的鼠标速度大于一定值时脚本将无法以预期的输入速度执行 部分系统环境中,可能出现无法录制完整的鼠标事件的情况,请以管理员身份运行此工具即可正常使用。 脚本语法说明:
脚本为
自定义扩展功能:程序提供了插件扩展接口,默认扩展类位于
在执行过程中,修改
定义 为脚本指定扩展,可以在GUI或是命令行下指定,也可以在脚本内指定(优先级最高),在脚本内指定时,需要在脚本第一行加上扩展模块名。
程序启动时默认添加plugins文件夹到库搜索路径,如果需要添加其它库搜索路径,可以通过在扩展开头添加以下内容: 示例:添加程序目录下的plugins文件夹到搜索路径 import os
from KeymouseGo import add_lib_path
add_lib_path([
os.path.join(os.getcwd(), "plugins")
]) 在相应文件夹添加入搜索路径后,该文件夹下模块的引入可以直接通过 例如,假设 import Util 流程控制 程序对脚本执行流程提供了以下方法,均以异常形式定义,使用时通过
各接口接受的流程控制异常:
日志调试 本程序使用 from loguru import logger 日志内容默认保存在主程序日志中,如果有其它的需求可以参阅loguru的文档进行改动 示例: 在 扩展操作:
在 from assets.plugins.Extension import *
from assets.plugins.ProcessException import *
from UIFunc import RunScriptClass
from loguru import logger
logger.info('Import MyExtension')
class MyExtension(Extension):
def __init__(self, runtimes, speed, thd=None, swap=None):
# 默认的构造函数将参数分别赋给self.runtimes,self.speed,self.swap
super().__init__(runtimes, speed, thd, swap)
# 保存当前执行次数
self.currentloop = 0
# 传递给子扩展的数据,传递时采用=赋值而不是浅/深复制
# self.swap = 'Helloworld'
"""
完成功能5
GUI界面或命令行设置的执行次数通过runtimes参数传入,并保存到self.runtimes
修改此值可以改变实际执行次数
"""
# self.runtimes = 3
def onbeforeeachloop(self, currentloop):
# 更新当前执行次数
self.currentloop = currentloop
return True
def onrunbefore(self, event, currentindex):
return True
# 完成功能3
# if self.currentloop == 1 and currentindex == 0:
# return False
# else:
# return True
def onrunafter(self, event, currentindex):
pass
# 完成功能1
# if self.currentloop == 0 and currentindex == 0:
# raise JumpProcess(2)
# 完成功能2
# elif self.currentloop == 0 and currentindex == 2:
# """
# run_sub_script包含5个参数,
# extension: 父流程的扩展对象,在这里输入self即可
# scriptpath: 子流程执行的脚本路径,采用相对路径或是绝对路径均可
# speed: 子流程执行的速度,默认为100(%)
# runtimes: 子流程执行次数,默认为1
# subextension_name: 子流程加载的扩展模块,默认为Extension
# """
# RunScriptClass.run_sub_script(self, 'scripts/0603_1013.txt',
# speed=self.speed,
# runtimes=2,
# subextension_name='MyExtension2',
# thd=self.thd
# )
# 完成功能4
# elif self.currentloop == 1 and currentindex == 1:
# """
# 在程序中,每个操作被封装为一个ScriptEvent对象,其内容包含
# event.delay: int类型,为操作延时(ms)
# event.event_type: str类型,为事件类型
# event.message: str类型,为操作类型
# event.action: str类型,为操作参数
# event.addon: 任意类型,添加的类型需要实现__str__方法以便保存
# """
# event.execute() 在 from assets.plugins.Extension import *
from assets.plugins.ProcessException import *
from loguru import logger
logger.info('Import MyExtension2')
class MyExtension2(Extension):
def __init__(self, runtimes, speed, thd=None, swap=None):
super().__init__(runtimes, speed, thd, swap)
self.currentloop = 0
def onbeforeeachloop(self, currentloop):
self.currentloop = currentloop
return True
def onrunafter(self, event, currentindex):
pass
# 完成功能2.i
# if self.currentloop == 0:
# raise BreakProcess()
# 完成功能2.ii
# elif self.currentloop == 1 and currentindex == 1:
# raise EndProcess()
def onendp(self):
pass
# 完成功能2.iii
# logger.info(self.swap) 使用命令行运行:直接运行指定脚本:
运行指定脚本3次:
以200%的速度运行指定脚本:
加载自定义扩展
源码编译, 打包 exe 文件:
赞赏支持如果您觉得这个项目对您有所帮助,并乐意支持开源工作,可通过 捐赠时可备注留下您的 您的热情,我的动力!开源是一种精神,也是一种生活态度 感谢以下支持者: 感谢 JetBrains 免费提供开发工具 更新说明暂时没法打包 v4.1
v4.0
v3.2.2
v3.2.1
v3.2
v3.1针对这个 issue(#39) 增加了两个功能点
v3.0因为兼容 macOS 遇到的很大的阻碍,最终放弃跨平台,血泪史可参看这两个 issue: #24 moses-palmer/pynput#55
v2.2
v2.1
v2.0
v1.5
v1.4
v1.3
v1.2
|
2023-10-27
2022-08-15
2022-08-17
2022-09-23
2022-08-13
请发表评论