跳到主要内容

从步骤到脚本

何时切换到脚本​

步骤能满足大多数操作。当您需要步骤无法容纳的内容时,请切换到脚本:

  • 算术运算,例如将窗口从当前位置移动 100 像素;
  • 用多个部分拼接文本,例如包含今天日期的文件名;
  • 不通过中间变量,直接在一个内置函数的字段中调用另一个内置函数;
  • 使用计数器的循环,例如“对前 5 个窗口中的每一个”。

切换永远不会丢失您的步骤:操作会同时保存其步骤正文和脚本正文(步骤、脚本和 AutoHotkey)。

代码视图​

备注

高级模式。 步骤编辑器末尾的 查看代码 会以文本形式(即步骤的存储形式)显示步骤。隐藏代码 会再次将其隐藏。每次选择另一个操作时,它都会以隐藏状态开始。

隐藏代码
原始步骤文本。在此处编辑会重建上方的步骤行;步骤行无法显示的内容只能在此处编辑。
[[steps]] id = 1 op = "call" fn = "KeyboardPressKeyCombo" args = ["^W"]
  • 在代码视图 ② 中编辑后,只要文本有效,上方的步骤行就会立即重建。
  • 当文本无法以行的形式显示时(例如因为它使用了“转到步骤”形式的 如果),编辑器会显示代码而不带 查看代码 链接,因为这时它是编辑这些步骤的唯一方式。步骤行会被一条说明原因的消息取代(问题)。
  • 编辑器永远不会改写它无法以行显示的文本。一旦您编辑了步骤行,文本中的注释将不会保留。

文本形式本身、每种步骤及其字段在步骤引擎中介绍。

将步骤转换为脚本​

  1. 在 编写方式 下选择 脚本。
  2. 如果该操作有步骤且其脚本正文为空,是否将步骤转换为脚本? 会询问是否转换它们。单击 转换。
  3. 转换结果会出现在脚本编辑器中。请在那里检查并完善它。

当这些步骤是在 录制器 页面上制作的录制时,对话框还会补充:这些步骤是一段录制。转换为脚本后,它们会忽略录制器的“回放速度”和“回放鼠标路径细节”:等待按录制时的速度执行,并且会回放每一次录制的鼠标移动。(回放设置)

转换是单向的。步骤会保持原样,因此切换回 步骤 会看到它们没有变化,但没有任何方法可以将脚本转换回步骤。

在以下情况下不会提供转换:

  • 脚本正文中已经有文本(否则会被覆盖);
  • 步骤无法以行的形式显示;
  • 任何步骤是 当…时重复、重复直到、退出循环 或 停止步骤。脚本只有计数循环,没有任何用于退出循环或提前结束操作的内容。

每种步骤会变成什么​

步骤脚本
内置函数步骤一条语句,WindowMaximize(window);
带有 将结果另存为 的步骤name = Builtin(…);
设置变量name = value;
字段中的 $name不带 $ 的名称,name
目标窗口 之类的读取值对应的调用,ContextGetWindow()
文本字段以外的命名常量,例如 MouseButton.Primary名称原样保留
文本带引号的字符串,反斜杠和引号会被转义
空字段该类型的空值,例如 0 或 ""
如果 / 否则 / 结束如果if (…) { … } else { … }
比较a == b 及其他运算符;反转结果 会变为 !(…)
重复指定次数一个 for 循环,计数器名为 i(如果 i 已被占用,则为 i2 等)

例如,最大化或还原示例会变成:

window = ContextGetWindow();
if (WindowIsMaximized(window)) {
WindowRestore(window);
} else {
WindowMaximize(window);
}

需要注意一个差异:在步骤中,在任何步骤保存某个变量之前就使用它,会读取为 0。在脚本中,变量必须在文本中首次使用之前赋值,否则脚本无法编译(变量)。

录制​

宏录制器也会以步骤形式显示录制内容,并提供一个以相同方式转换它的 脚本 按钮。保持为步骤的录制遵循 回放速度 设置;转换后的录制则按录制时的样子播放。