跳到主要内容

文本窗口

在独立窗口里显示或编辑较长文本。可以显示后继续跑后续步骤,也可以等用户关窗再往下走,并取回改过的文字和点过的按钮。

当前模块定义

概述

两种常用工作方式:

  • 不等待:弹出窗口后立刻执行后续步骤。
  • 等待关闭:等窗口关掉再继续;可在工具栏加按钮,并返回用户点的按钮和改过的文字。

窗口使用

运行中的文本窗口带工具栏、扩展菜单、右键和查找(Ctrl+F)。下面叠层示意保留原图:

右键菜单

  • 撤销、重做、剪切、复制、粘贴
  • 恢复初始内容:回到刚打开时的文本
  • 高亮语法:选择高亮类型
  • 置顶:置顶或取消置顶

快捷键

快捷键作用
Ctrl+Z / Ctrl+Y撤销 / 重做
Ctrl+C、Ctrl+X、Ctrl+V复制、剪切、粘贴
Ctrl+F / Ctrl+H查找 / 替换
Alt+↑ / Alt+↓当前行上移 / 下移(v1.40.11+)
Ctrl+D重复选中内容;未选择时重复当前行(v1.40.12+)
Ctrl+Shift+D删除当前行

操作类型

操作类型(界面里也叫等待方式):

  • 显示窗口,不等待关闭:弹出后立刻继续。
  • 显示窗口,等待关闭:等用户关窗再继续。
  • 关闭窗口:关掉前面用「不等待」打开的文本窗口。
  • 获取窗口信息:指定窗口是否还在、当前文本等。
  • 追加内容:向已打开的窗口追加文本。
  • 显示和激活窗口:把最小化或被挡住的窗口提到前台。
  • 等待窗口关闭:等指定窗口关掉再继续(1.39.33+)。
  • 获取所有文本窗口:返回本机文本窗口词典。为安全起见,仅限自己开发的动作使用。
  • 获取当前动作创建的所有文本窗口:只返回当前动作打开的窗口。

跨步骤操作同一个窗口时,用 文本窗口标识 指定目标。填 = 表示用当前动作 ID,避免和别的动作抢同一个窗口。

参数说明

操作类型:见上一节。默认「显示窗口,不等待关闭」。

文本内容:要显示或追加的文字。显示窗口、追加内容时使用。

窗口标题:窗口标题栏文字。默认「文本窗口」。仅显示窗口时使用。

置顶显示:是否保持在最前。默认关闭。

工具栏操作:在窗口工具栏显示附加按钮,每行一个。格式见下文「工具栏操作按钮」。仅显示窗口时使用。

文本窗口标识:可选。显示前先关掉(或更新)此前弹出的、使用同一标识的窗口。适合 OCR、翻译这类会反复弹出结果的动作。应全局唯一。默认 =(当前动作 ID)。「获取所有 / 当前动作文本窗口」时不出现此参数。

窗口位置类型:窗口出现在哪,如屏幕中间、跟随鼠标、全屏、最大化、自定义位置。默认屏幕中间。

窗口尺寸/位置

  • 窗口位置类型 为「自定义位置」时,写 left,top,right,bottom(左边,顶边,右边,底边)。每个值可以是像素或百分比。
    • 数字是相对屏幕左边 / 顶边的物理像素,如 100,100,500,500 是 400×400 的矩形。
    • 百分比是相对屏幕工作区,如 0%,0%,50%,100% 占左半边。
    • 可混用,如 100,100,50%,50%:左上角在 100,100,右下角在工作区中心。
  • 其它位置类型时,写 width,height(宽,高),数字或百分比。
    • 数字是逻辑像素(已含 Windows 缩放)。500,400 在 150% 缩放下实际约 750×600 物理像素。
    • 百分比相对桌面工作区,如 50%,50% 约占工作区 1/4。
    • 宽和高可分别用数字和百分比,如 300,90%

字体大小:初始字号,默认 14

字体名称:仅需要时填写。多个字体用英文逗号分隔。

背景颜色 / 文字颜色:可选,格式 #RRGGBB

语法高亮:选择已有规则;也可指定自定义规则文件路径或规则正文(v1.39.11+)。规则格式见 AvalonEdit 官方规则

自动保存到状态:文本被修改时自动写入动作状态,避免意外关闭丢内容。这里填状态 Key 字符串(不要用变量),例如 暂存文本。之后可用 状态存取 按同一 Key 读回。

Esc 键关闭窗口:在文本窗口里按 Esc 是否关窗。默认开启。

失去焦点自动关闭:失焦后自动关窗,适合只看不改的场景(1.26.5+)。若手动置顶,会暂时取消此行为。

显示行号:左侧是否显示行号。默认开启。

自动换行显示:单行过长是否折行;关闭则出现水平滚动条(v1.10.1+)。默认开启。

显示内置工具栏:是否显示预置工具栏。默认开启。

未选择内容时,复制或剪切整行:未选中时,Ctrl+C / Ctrl+X 操作光标所在整行(v1.10.1+)。默认关闭。

光标位置:打开后插入符所在位置。0 最前,-1 末尾,其它数字表示该字符后面(v1.36.23+)。

如果窗口存在,则直接更新窗口内容(而不是关闭后打开新窗口):仅「不等待」时出现。默认关闭。

高级设置:仅特殊需求时使用。窗口加载后或关闭前执行子程序,或加额外选项,每行一条。

支持的指令:

  • loaded_sp:窗口加载后执行的子程序
  • closing_sp:窗口关闭时执行的子程序

调用子程序时传入:

  • _windowId 窗口标识
  • _handle 窗口句柄
  • _window 窗口对象
  • _windowLocation 最后的窗口位置

需要熟悉相关编程,避免卡死 UI 线程。(v1.39.34;1.42.35 增加 _windowLocation

失败后停止:出错后是否中止动作。默认开启。

输出

  • 是否成功
  • 选择的项:用户点的附加按钮。直接点 X 关窗则返回空。仅「等待关闭」。
  • 结果文本:框内最终全部文本。等待关闭、关闭窗口、获取窗口信息时输出。
  • 窗口句柄:不等待、获取窗口信息时输出。
  • 选中的文本:框内当前选中的文字。
  • 光标位置:插入符所在字符序号。
  • 窗口位置:窗口最终显示位置。
  • 窗口是否存在:仅获取窗口信息。
  • 所有窗口:词典,key 为窗口句柄,value 为窗口标识。仅「获取所有文本窗口」「获取当前动作创建的所有文本窗口」。获取全部窗口时,仅限自己开发的动作使用。

工具栏操作按钮

  • 每行一个按钮。
  • 格式为 显示内容|值或处理方式
  • 显示内容 使用 [图标]标题文字(ToolTip文字)
    • 示例:[fa:Solid_Cog:#339900]转大写(将选中的文字转换为大写)
    • 图标和 Tooltip 都可省略。
    • 图标:fa: 开头;第二部分是图标名,可在动作图标选择窗口里查看:
    • 第三部分是颜色,#RRGGBB
    • 网络图片(1.22.27+):[url:https://files.getquicker.net/_icons/0C8F7C4E850B0BF5A9915603076B6D3577F0C3F6.svg]
  • 标题里可用 _字母 设快捷访问键。例如「保存(_S)」可用 Alt+S。
  • Tooltip 应多于 2 个字符,尽量避免括号干扰匹配。

支持菜单:

  • 一个主菜单下可跟多个子项。
  • 主菜单:[+] [fa:Solid_Pen:#FF0000]标题文字(提示文字)
  • 子菜单:[-] [fa:Solid_Pen:#FF0000]菜单标题文字(菜单提示文字)

//// 开头的行当作注释,或用来临时关掉这一行。

默认用 | 分隔显示内容和值。要改分隔符,在第一行写 |=新分隔符

按钮行为

扩展按钮 | 后面定义行为,两种:

返回值并关窗:直接写要返回的值。仅「等待关闭」可用。

例如:使用百度翻译|baidu,点击后关窗,选择的项 输出 baidu

执行文本处理:写成 call: 加功能定义。

定义文本处理功能

基本格式是 call: 后面用 $ 分成 4 段:

call:第1部分$第2部分$第3部分$第4部分

第1部分:处理全部文本还是选中部分。

  • aall:全部内容
  • sselection:选中部分
  • nnone:不需要输入文本
  • auto:有选中则用选中,否则用全部(1.5.20+)
  • lline:选中内容 / 光标所在整行(1.10.1+)

第2部分:处理结果怎么用。

  • rareplaceall:替换全部内容
  • rsreplaceselection:替换选中部分
  • ccopy:复制到剪贴板
  • nnone:不处理返回内容
  • rauto:按来源是选中还是全部,自动替换对应范围(1.5.20+)
  • insertafteria:在选中后面插入(1.6.2+)
  • append:在末尾追加(1.37.35+)
  • caret:更新光标位置,用于子程序返回的 caretOffset(1.39.22+)

rs / ia / ra 时,可把光标移到插入内容的某处:操作方式-从结尾向前的字符数操作方式+从开头的字符数。例如 rs-1 表示替换选中后,光标停在新内容倒数第 1 个字符前。也可由子程序的 caretOffset 控制,见下文。

第3部分:功能类型。

  • sp:子程序
  • ininternal:内置文本处理
  • cloud:在线文本处理(后期支持)
  • url:第三方文本处理网址(后期支持)

第4部分:资源名称或网址,以及参数。

格式:子程序名在线服务 key第三方网址?参数1=值1&参数2=值2...

没有参数时可省略 ? 及后面。参数值需要 URL 编码。

文本处理子程序

调用示例:

  • 不带参数:call:s$rs$sp$子程序名
  • 带参数:call:s$rs$sp$子程序名?head=head_value&end=end_value&param3=value3

子程序需要符合:

  • Input:文本,待处理内容。
  • params(可选):文本或词典,附加参数。文本类型时原样传入(如 head=head_value&end=end_value);词典类型时自动拆开,表达式里按键取值:
$={params}["参数名"]
  • output:文本,处理结果。output 为空时不替换选中内容(避免用户取消时被清空)。若要清空,请返回 \*NULL\*
  • caretOffset(可选,1.39.20+):设定光标。优先级高于指令第 2 部分:
    • +00、正数:从插入内容开头算
    • -0、负数:从插入内容末尾向前
    • 空字符串:不处理

内置的文本处理功能

调用示例:

  • call:s$rs$in$toUpper
  • call:a$ra$internal$toLower

目前支持:

名称作用
toUpper / toLower英文转大写 / 小写
reverse反转文本
trimStart / trimEnd / trim去前 / 后 / 前后空白
urlEncode / urlDecodeURL 编解码(utf8)
htmlEncode / htmlDecodeHTML 编解码
intercappedToSentence组合词拆成句子(thisIsChina → this Is China)
base64Encode / base64DecodeBase64 编解码
removeEmptyLine / mergeEmptyLine去空行 / 合并多个空行
sortLinesAsc / sortLinesDesc多行 A–Z / Z–A
reverseLines翻转多行顺序
toTitleCase首字母大写
formatJson格式化 JSON
md5 / sha1Hash / sha256Hash计算哈希
escapeJson转义为合法 JSON 值
DecodeUnicode解码 \uXXXX
toCnNum金额数字转大写
cn2num / num2cn中文数字 ↔ 阿拉伯数字
ExpandEnvironmentVariables替换环境变量

在线文本处理服务

预留接口。调用:call:a$ra$cloud$服务名?参数1=值1&参数2=值2

? 及参数按具体服务可选。示例:Echo服务|call:all$rs$cloud$echo

目前可用:

  • echo:原样返回输入

第三方文本处理服务

预留接口。调用:call:a$ra$url$https://somesite.com/text/processor?参数1=值1&参数2=值2

接口约定:

请求:POST,JSON 请求体:

{
"content": "待处理文本的内容。"
}

响应

{
"isSuccess": true,
"message": "",
"data": "文本处理结果"
}
  • isSuccess:是否成功
  • message:失败时的错误消息
  • data:处理后的文本

限制与排障

  • 跨步骤操作同一窗口时,文本窗口标识 必须一致;填 = 可避免和其它动作冲突。
  • 「获取所有文本窗口」只适合自己开发的动作。
  • 高级设置 里的子程序跑在 UI 线程,写不好会卡死窗口。
  • 工具栏 call: 的参数值需要 URL 编码;子程序 output 为空不会替换选中内容。

相关链接

更新历史

  • 1.1.12 增加字体大小;窗口位置增加「全屏」;支持 Ctrl+滚轮缩放。
  • 1.5.17 扩展按钮外观和功能增强。
  • 1.5.27 增加置顶、失去焦点后关闭。
  • 1.6.2 支持移动光标。
  • 1.36.23 增加设置光标位置。
  • 1.37.35 增加 append。
  • 1.39.11 自定义语法高亮。
  • 1.39.20 子程序可设定光标。
  • 1.39.22 工具栏按钮增加 caret。
  • 1.39.33 增加等待窗口关闭。
  • 20240717 「Esc 键关闭窗口」改为独立参数。
  • 20250605 补充快速访问键说明。

更新于