From bb3888d8dc70d88f3450392c33b9593d9c8e3ba9 Mon Sep 17 00:00:00 2001 From: fofolee Date: Mon, 20 Jul 2020 19:06:14 +0800 Subject: [PATCH] =?UTF-8?q?=E6=9B=B4=E6=96=B0=E6=96=87=E6=A1=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 255 +++++++++++++----------------------- src/CHANGELOG.md | 153 ++++++++++++++++++++++ src/README.md | 224 +++++++++++++------------------ src/helps/HELP.html | 2 +- src/helps/HELP.md | 42 +++--- src/helps/quickcommand.html | 2 +- src/helps/quickcommand.md | 91 ++++++++----- 7 files changed, 426 insertions(+), 343 deletions(-) create mode 100644 src/CHANGELOG.md diff --git a/README.md b/README.md index 945a19b..26b4207 100644 --- a/README.md +++ b/README.md @@ -1,206 +1,137 @@ -# 快捷命令 V2.0.0 (近期) +# 快捷命令 V2.0.0 ## 简介 -快速执行自定义的命令、脚本或模拟按键 +- 自定义在 uTools 中快速执行的命令或脚本 -### 更新 +- 内置了执行 shell 命令、文本处理、文本替换、网址二维码等实用命令 -#### v2.0.0 (预告) +- 支持在插件内下载别人分享的命令 - - `模拟动作`模式改名为`quickcommand` - - 在 vm2 内运行,与插件环境隔离 - - 支持使用nodejs/electron/utools的api - - 支持通过列表、多输入框、多按钮、文本框等多种形式获得用户的输入 - - 现在和其他脚本一样可以针对输出进行不同处理或显示 - - 封包了一些实用功能 - - 现在添加按键通过监听按键进行添加,不再需要手动添加 - - 预设动作添加跳转到指定插件,可以实现自定义插件关键字的功能 - - 重写 sleep 函数,解决 utools 隐藏后延时不准的bug(其实是electron的问题) - - 新增支持运行C#,C脚本,以及windows下可以通过wsl运行shell脚本 - - 新增支持填写脚本参数,可以运行带参数的脚本 - - 命令的输出实时动态显示,无需等到命令执行结束,插件高度根据输出内容自适应,带子输入框的情况下,输出自动滚动 - - 可以在添加命令的界面直接运行当前代码进行测试 - - 支持平台选项 - - 支持给命令添加标签,进行分类 - - 支持文件匹配,新增相应特殊变量 - - 内置`文本处理`,`find GUI`,`下载uTools离线插件`,`特殊符号`等多个实用快捷命令,均使用新版本新增功能实现 - - 适配暗黑模式,UI改版 - - 支持对文本和 HTML 的输出进行搜索 - - 魔改codemirror,代码编辑器增强 - - 支持js、py代码格式化 - - 新增cmd、applescript代码高亮(原先用的shell的) - - 支持代码提示和特殊变量提示,其中cmd和shell支持提示和补全当前环境变量下的命令,js和py支持智能提示,其他语言支持关键字提示 - - 支持vscode快捷键 - - 新增一个feature,脚本编辑器,可以在选中脚本文件后快速进行编辑和运行测试 - -先写到这。。 - - -#### v1.6.1 - - - 现在执行快捷命令时,会现将uTools的高度设置为0,如果有输出,再展开 - - 模拟动作模式增加支持`require` 😈😈 - - 匹配主窗口输入模式下,会对输入的格式做简单校验 - -#### v1.6.0 - -- 修复php乱码 -- 现在可以自定义输出的编码方式,脚本里选择`custom` -- 模拟操作模式的`+延时`合并到`+动作中` - -#### v1.5.9 - -- 修复不能导入命令的bug -- 由于uTools 1.0.0版本匹配窗口时无法再使用正则,所以选择匹配窗口模式时,在填写进程时需填写进程全名,多个进程逗号隔开 -- 忽略输出模式调整回自动隐藏窗口 -- 更新示例命令库 - -#### v1.5.8 - -- 适配新版本 - -#### v1.5.7 - -- 添加`模拟操作`的功能,在`类型`下拉框内选取 - - 该模式提供了模拟按键、打开文件、打开网站、定位文件、执行命令等实用功能 - - 结合模拟按键和窗口匹配,可以实现针对不同的软件模拟不同的操作 - - 该模式适用于没有编程基础的用户,只需要通过下拉框选取想要的功能,就可以快速编写一个简单的命令 - - 该模式同样适用于本机没有任何语言环境的或环境变量失效的用户,不需要安装nodejs即可执行js代码 - - 虽然没有提供`特殊变量`的下拉框,但实际是支持的 -- 脚本报错时提供跳转至临时脚本目录的选项 -- 添加一个`下载命令`的按钮,可以跳转到[样例命令库]( https://github.com/fofolee/uTools-QuickerCommand/tree/master/CommandCollections ),如果你不知道怎么去编写一个目录,可以尝试下载导入进行参考 -- (貌似)修复了执行完命令后,再次呼出uTools会短暂显示命令关键词的bug,该bug可能是由先隐藏uTools再退出插件所引起 - -![JU0UAS.png](https://s1.ax1x.com/2020/04/22/JU0UAS.png) - -#### v1.5.1 -- 修复macOS下新增命令界面排版错误的问题 -- 修复macOS下使用shell脚本且发送输出结果到活动窗口时结果不正确的问题 - -#### v1.5.0 - - - 注意本次更新对多处代码进行了重写,如果原有命令在上一版运行正常,在这一版出现了一些问题,请重新编辑该命令,修改命令的模式。如原有命令中使用了{{input}}变量的,关键字会变成[object object],请重新编辑该命令,将命令调整为`主输入框正则匹配`,如果原有命令中使用了{{pwd}}等变量的,请重新编辑该命令,将命令调整为`通过uTools呼出前的窗口匹配` - - 原先命令自定了图标的,如果图标显示异常,重新选择设置一次图标即可 - -![JU08Xt.png](https://s1.ax1x.com/2020/04/22/JU08Xt.png) - -##### 功能更新 - -- 新增`通过uTools呼出前的窗口匹配`的模式,现在可以快速编写一个应用到当前活动窗口的脚本 -- 现在可以分别通过`关键字`,`主输入框正则匹配`,`活动窗口匹配`三种方式来调用自定义的脚本 - - -- 新增一个特殊变量`当前窗口信息`,输出`json`格式的窗口相关信息,将原先的特殊变量`用户名`改为`本机唯一ID`,方便针对不同电脑编写脚本,两个变量均通过官方API获取 -- 弃用原先模拟按键的方式,获取资源管理器路径、选中文件、浏览器地址均借助官方API -- 新增`发送系统通知`的输出模式 By [imxiny](https://github.com/imxiny) -- 新增`在终端显示`的输出模式, 用以解决脚本需要显示动态输出的问题, 如 curl 命令 [issue](https://github.com/fofolee/uTools-QuickerCommand/issues/3) -- 上传一些命令至仓库的`CommandCollections`文件夹,用以作为编写命令的样例,同时大家可以提交PR丰富这个命令库 [CommandCollections](https://github.com/fofolee/uTools-QuickerCommand/tree/master/CommandCollections) - -##### BUG 修复 - -- 修复 php 无法输入 -

一、添加命令

基础

常用动作

通过点击+动作按钮进行添加

模拟按键

通过点击+按键按钮进行添加

进阶

匹配

决定通过何种方式进入插件,不同的匹配模式也会影响插值变量的使用

关键字
正则/划词
窗口/进程
复制/选中文件

环境

quickcommand
python、cmd、shell 、php 等环境

插值变量

本插件内置了一些特殊的插值变量,可以获取一些特殊的值,能够加入到插件里的任意脚本中

全模式可用
匹配窗口/进程时可用
匹配正则/划词时可用
匹配复制/选中文件时可用

输出

如果脚本有输出,则可以对输出内容做如下处理

二、导出/分享/导入

导出命令

点击命令旁的蓝色小箭头即可导出命令,支持

分享命令

点击分享命令即可一键分享当前的命令,初次分享命令,需要按照以下步骤设置 token:

1.通过 https://www.yuque.com/g/fofolee/em2rng/collaborator/join?token=6LZn2vc34dqfIQdC 成为知识库成员,如果没有语雀账号,需要先注册一个

2.生成一个具有编辑权限的 token

U2Rw0P.png

3.在插件内填入生成的 token,之后就可以尽情地分享命令啦

导入命令

获取分享

点击设置界面底部的获取分享即可获取并导入在线分享的命令啦

三、关于

作者

github @fofolee

猿料社区 @fofolee

赞赏码

鉴于之前某位可爱的同学捐赠的时候捐错了对象,此处献上我的捐赠码~

所有插件

所有由我制作的插件如下表所示,有兴趣的童鞋可以试一试~

快捷命令
程序员手册
bilibili
关闭进程
插件面板
随机壁纸
Github助手
文件夹助手
emoji搜索
😩能不能好好说话
winget
icons8搜索
kali 工具介绍
png转icon
+

一、添加命令

基础

常用动作

通过点击+动作按钮进行添加

模拟按键

通过点击+按键按钮进行添加

进阶

匹配

决定通过何种方式进入插件,不同的匹配模式也会影响插值变量的使用

关键字
正则/划词
窗口/进程
复制/选中文件

环境

quickcommand
python、cmd、shell 、php 等环境

插值变量

本插件内置了一些特殊的插值变量,可以获取一些特殊的值,能够加入到插件里的任意脚本中

全模式可用
匹配窗口/进程时可用
匹配正则/划词时可用
匹配复制/选中文件时可用

输出

如果脚本有输出,则可以对输出内容做如下处理

二、导出/分享/导入

导出命令

点击命令旁的蓝色小箭头即可导出命令,支持

分享命令

点击分享命令即可一键分享当前的命令,初次分享命令,需要按照以下步骤设置 token:

1.通过 https://www.yuque.com/g/fofolee/qcshares/collaborator/join?token=6LZn2vc34dqfIQdC 成为知识库成员,如果没有语雀账号,需要先注册一个

2.生成一个具有编辑权限的 token

U2Rw0P.png

3.点击命令旁的蓝色小箭头,填入生成的 token ,之后就可以尽情地分享命令啦

注意:

  1. 为了保证命令的安全和质量,分享后的命令必须经过快捷命令插件作者本人发布后才能出现在分享中心当中。所有分享而暂未发布的命令在 https://www.yuque.com/g/fofolee/qcshares/docs 可以查看到(仅知识库成员访问),所有已发布的命令在 https://www.yuque.com/fofolee/qcreleases 可以查看到(所有人均可访问)。

  1. 请自觉规范自己的行为,所有操作均有日志,所有未发布的命令均视为不安全的命令

导入命令

获取分享

可以通过以下两种方式来获取分享:

  1. 点击设置界面底部的分享中心即可获取并导入在线分享的命令

UfBox1.png

UfDkdS.png

  1. 访问 https://www.yuque.com/fofolee/qcreleases 即可查看发布的命令

三、关于

作者

github @fofolee

猿料社区 @fofolee

赞赏码

鉴于之前某位可爱的同学捐赠的时候捐错了对象,此处献上我的捐赠码~

所有插件

所有由我制作的插件如下表所示,有兴趣的童鞋可以试一试~

快捷命令
程序员手册
bilibili
关闭进程
插件面板
随机壁纸
Github助手
文件夹助手
emoji搜索
😩能不能好好说话
winget
icons8搜索
kali 工具介绍
png转icon
\ No newline at end of file diff --git a/src/helps/HELP.md b/src/helps/HELP.md index 043b0f8..6ca148c 100644 --- a/src/helps/HELP.md +++ b/src/helps/HELP.md @@ -6,9 +6,9 @@ #### 常用动作 -通过点击`+动作`按钮进行添加 +通过点击`+动作`按钮进行添加 -- 打开文件/文件夹/软件 (实现在主输入框启动自定义的软件名称及路径 ) +- 打开文件/文件夹/软件 (实现在主输入框启动自定义的软件名称及路径 ) - 在文件管理器中定位文件 - 用默认浏览器打开网址(实现类似网页快开的功能) - 用 ubrowser 打开网址 @@ -20,11 +20,11 @@ - 转至指定插件(实现自定义插件关键字) - 添加延时 -![](https://i.imgur.com/dnPOyqW.png) - #### 模拟按键 -通过点击`+按键`按钮进行添加 +通过点击`+按键`按钮进行添加 + +![](https://i.imgur.com/SozshQL.png) ## 进阶 @@ -116,18 +116,18 @@ #### 导出命令 -点击命令旁的蓝色小箭头即可导出命令,支持 +点击命令旁的蓝色小箭头即可导出命令,支持 -- 导出到剪贴板 -- 导出到文件 +- 导出到剪贴板 +- 导出到文件 -![](https://i.imgur.com/mnVGx8J.png) +![](https://i.imgur.com/NoM6y5n.png) #### 分享命令 点击分享命令即可一键分享当前的命令,初次分享命令,需要按照以下步骤设置 token: -1.通过 [https://www.yuque.com/g/fofolee/em2rng/collaborator/join?token=6LZn2vc34dqfIQdC](https://www.yuque.com/g/fofolee/em2rng/collaborator/join?token=6LZn2vc34dqfIQdC) 成为知识库成员,如果没有语雀账号,需要先注册一个 +1.通过 [https://www.yuque.com/g/fofolee/qcshares/collaborator/join?token=6LZn2vc34dqfIQdC]( https://www.yuque.com/g/fofolee/qcshares/collaborator/join?token=6LZn2vc34dqfIQdC ) 成为知识库成员,如果没有语雀账号,需要先注册一个 ![](https://i.imgur.com/H4Hh781.png) @@ -135,9 +135,17 @@ ![U2Rw0P.png](https://s1.ax1x.com/2020/07/19/U2Rw0P.png) -3.在插件内填入生成的 token,之后就可以尽情地分享命令啦 +3.点击命令旁的蓝色小箭头,填入生成的 token ,之后就可以尽情地分享命令啦 -![](https://i.imgur.com/tAXTSi9.png) +![](https://i.imgur.com/pQbFcvs.png) + +**注意:** + +1. 为了保证命令的安全和质量,分享后的命令必须经过快捷命令插件作者本人`发布`后才能出现在`分享中心`当中。所有分享而暂未发布的命令在[ https://www.yuque.com/g/fofolee/qcshares/docs ]( https://www.yuque.com/g/fofolee/qcshares/docs )可以查看到(仅知识库成员访问),所有已发布的命令在[ https://www.yuque.com/fofolee/qcreleases ]( https://www.yuque.com/fofolee/qcreleases )可以查看到(所有人均可访问)。 + +![](https://i.imgur.com/mn1qeTT.png) + +2. 请自觉规范自己的行为,所有操作均有日志,所有未发布的命令均视为不安全的命令 #### 导入命令 @@ -148,11 +156,15 @@ #### 获取分享 -点击设置界面底部的`获取分享`即可获取并导入在线分享的命令啦 +可以通过以下两种方式来获取分享: -![](https://i.imgur.com/rWqQogD.png) +1. 点击设置界面底部的`分享中心`即可获取并导入在线分享的命令 -![](https://i.imgur.com/r3vJWKv.png) +![UfBox1.png](https://i.imgur.com/pKKWqdT.png) + +![UfDkdS.png](https://s1.ax1x.com/2020/07/20/UfDkdS.png) + +2. 访问[ https://www.yuque.com/fofolee/qcreleases ]( https://www.yuque.com/fofolee/qcreleases )即可查看发布的命令 # 三、关于 diff --git a/src/helps/quickcommand.html b/src/helps/quickcommand.html index dacd436..248c444 100644 --- a/src/helps/quickcommand.html +++ b/src/helps/quickcommand.html @@ -315,6 +315,6 @@ header, .context-menu, .megamenu-content, footer { font-family: var(--font-sans- -

quickcommand

showButtonBox(buttons)

显示一个按钮对话框,用来接收用户的输入

示例

实例

showInputBox(placeHolders)

显示一个输入框界面,用来接用户的输入

示例

实例

showSelectList(selects, options)

显示一个支持搜索的且可以动态更新的选项列表

当指定optionTypejson时,类似于插件开发的列表模式titledescriptionicon分别表示标题、描述和图标,其中title为必备属性

示例

实例

updateSelectList(opt, id)

动态更新当前的选项列表的选项。

示例

showTextAera(placeholder)

显示一个文本框界面,用来接用户的输入

示例

实例

showMessageBox(message, icon, time)

显示一个自动消失的提示框

示例

sleep(ms)

由于setTimeout在electron中存在限制,在隐藏到后台时不会被执行,在vm2中也有bug,所以在quickcommand的环境下被禁用了,但对于模拟按键之类的场景,延迟是不可缺少的,所以提供了sleep函数来解决这个问题

示例

setTimeout(callback, ms)

用法和setTimeout一样,但实现原理不一样,sleep的异步版本

示例

htmlParse(html)

将给定的html字符串解析为DOM对象,用于快速编写爬虫脚本

示例

downloadFile(url, defaultPath, showDialog)

下载文件,也可单纯用于http请求,无论defaultPath是否定义,都将得到响应内容的Buffer,当showDialogfalse且定义了defaultPath时,会下载文件为`defaultPath,当showDialogtrue时,会弹出保存文件对话框,defaultPath为对话框默认显示的文件名

payload

当匹配模式为关键字时,返回进入插件的关键字;为正则时,返回匹配的文本;为窗口时,返回匹配的窗口信息;为文件时,返回匹配的文件信息

示例

kill(pid, signal)

signal 发送给 pid 标识的进程 , 默认为关闭进程,同process.kill

示例

simulateCopy()

模拟复制操作

simulatePaste()

模拟粘贴操作

上下文一览

 

+

quickcommand

showButtonBox(buttons)

显示一个按钮对话框,用来接收用户的输入

示例

实例

showInputBox(placeHolders)

显示一个输入框界面,用来接用户的输入

示例

实例

showSelectList(selects, options)

显示一个支持搜索的且可以动态更新的选项列表

当指定optionTypejson时,类似于插件开发的列表模式titledescriptionicon分别表示标题、描述和图标,其中title为必备属性

示例

实例

updateSelectList(opt, id)

动态更新当前的选项列表的选项。

示例

showTextAera(placeholder)

显示一个文本框界面,用来接用户的输入

示例

实例

showMessageBox(message, icon, time)

显示一个自动消失的提示框

示例

showConfirmBox(title)

显示一个确认框

sleep(ms)

由于setTimeout在electron中存在限制,在隐藏到后台时不会被执行,在vm2中也有bug,所以在quickcommand的环境下被禁用了,但对于模拟按键之类的场景,延迟是不可缺少的,所以提供了sleep函数来解决这个问题

示例

setTimeout(callback, ms)

用法和setTimeout一样,但实现原理不一样,sleep的异步版本

示例

htmlParse(html)

将给定的html字符串解析为DOM对象,用于快速编写爬虫脚本

示例

downloadFile(url, defaultPath, showDialog)

下载文件,也可单纯用于http请求,无论defaultPath是否定义,都将得到响应内容的Buffer,当showDialogfalse且定义了defaultPath时,会下载文件为`defaultPath,当showDialogtrue时,会弹出保存文件对话框,defaultPath为对话框默认显示的文件名

payload

当匹配模式为关键字时,返回进入插件的关键字;为正则时,返回匹配的文本;为窗口时,返回匹配的窗口信息;为文件时,返回匹配的文件信息

示例

kill(pid, signal)

signal 发送给 pid 标识的进程 , 默认为关闭进程,同process.kill

示例

simulateCopy()

模拟复制操作

simulatePaste()

模拟粘贴操作

上下文一览

nodejs

electron

utools

quickcommand

 

\ No newline at end of file diff --git a/src/helps/quickcommand.md b/src/helps/quickcommand.md index a4c2720..c86f36b 100644 --- a/src/helps/quickcommand.md +++ b/src/helps/quickcommand.md @@ -240,6 +240,19 @@ quickcommand.showMessageBox("这是一段3s后自动消失的成功提示") quickcommand.showMessageBox("这是一段3s后自动消失的失败提示", "error") ``` +#### `showConfirmBox(title)` + +- title: String | undefined 提示的标题 +- 返回: Promise + +显示一个确认框 + +```js +quickcommand.showConfirmBox().then(() => { + console.log('点击了确定') +}) +``` + ####`sleep(ms)` - ms: Integer 等待的毫秒 @@ -342,42 +355,54 @@ quickcommand.kill(16084) ## 上下文一览 -- nodejs [文档]( http://nodejs.cn/api/ ) - - require - - os - - fs - - path - - child_process - - util - - axios [文档]( https://www.kancloud.cn/yunye/axios/234845) -- electron [文档]( http://www.electronjs.org/docs ) - - clipboard - - contextBridge - - crashReporter - - desktopCapturer - - ipcRenderer - - nativeImage - - shell - - webFrame -- utools [文档]( https://u.tools/docs/developer/api.html ) +#### nodejs + +- [文档]( http://nodejs.cn/api/ ) + +- **require** +- **os**: {arch: *ƒ*, cpus: *ƒ*, endianness: *ƒ*, freemem: *ƒ*, getPriority: *ƒ*, …} +- **fs**: {appendFile: *ƒ*, appendFileSync: *ƒ*, access: *ƒ*, accessSync: *ƒ*, chown: *ƒ*, …} +- **path**: {resolve: *ƒ*, normalize: *ƒ*, isAbsolute: *ƒ*, join: *ƒ*, relative: *ƒ*, …} +- **child_process**: {_forkChild: *ƒ*, ChildProcess: *ƒ*, exec: *ƒ*, execFile: *ƒ*, execFileSync: *ƒ*, …} +- **util**: {_errnoException: *ƒ*, _exceptionWithHostPort: *ƒ*, _extend: *ƒ*, callbackify: *ƒ*, debuglog: *ƒ*, …} +- **axios** [文档]( https://www.kancloud.cn/yunye/axios/234845) + +#### electron + +- [文档]( http://www.electronjs.org/docs ) + +- **clipboard**: Object +- **contextBridge**: Object +- **crashReporter**: Object +- **desktopCapturer**: Object +- **ipcRenderer**: EventEmitter +- **nativeImage**: Object +- **shell**: Object +- **webFrame**: WebFrame +#### utools + + - [文档]( https://u.tools/docs/developer/api.html ) - all except below - ~~db~~ - ~~removeFeature~~ - ~~setFeature~~ -- quickcommand - - downloadFile: *ƒ (url, defaultPath = '', showDialog = false)* - - htmlParse: *ƒ (html)* - - kill: *ƒ (pid, signal = 'SIGTERM')* - - payload: "" - - setTimeout: *ƒ (callback, ms)* - - showButtonBox: *ƒ (buttons)* - - showInputBox: *ƒ (placeHolders)* - - showMessageBox: *ƒ (title, icon = "success", time = 3000)* - - showSelectList: *ƒ (selects, opt = {})* - - showTextAera: *ƒ (placeholder = "")* - - simulateCopy: *ƒ ()* - - simulatePaste: *ƒ ()* - - sleep: *ƒ (ms)* - - updateSelectList: *ƒ (opt, id)* + +#### quickcommand + + - **downloadFile**: *ƒ (url, defaultPath = '', showDialog = false)* + - **htmlParse**: *ƒ (html)* + - **kill**: *ƒ (pid, signal = 'SIGTERM')* + - **payload**: "" + - **setTimeout**: *ƒ (callback, ms)* + - **showButtonBox**: *ƒ (buttons)* + - **showConfirmBox**: *ƒ (title)* + - **showInputBox**: *ƒ (placeHolders)* + - **showMessageBox**: *ƒ (title, icon = "success", time = 3000)* + - **showSelectList**: *ƒ (selects, opt = {})* + - **showTextAera**: *ƒ (placeholder = "")* + - **simulateCopy**: *ƒ ()* + - **simulatePaste**: *ƒ ()* + - **sleep**: *ƒ (ms)* + - **updateSelectList**: *ƒ (opt, id)*