跳到主要内容

步骤编辑器报告的问题

步骤编辑器会在您编辑时检查步骤。其消息出现在四个位置:字段下方、步骤行上的标记、列表下方的 步骤未保存:,以及当步骤无法以行显示时取代列表的位置。

字段下方​

有问题的字段会在您键入时显示红色边框,并在其下方显示消息。当字段中包含未通过检查的键入文本时,步骤不会被保存:列表下方会显示 步骤未保存:步骤 N 有一个无效的字段,在您修复该字段之前,操作会保留其上次保存的步骤(步骤未保存)。

空字段不会显示任何消息,也不会阻止保存;步骤会以空字段保存。操作运行时,数字、真或假或窗口字段为空的步骤会使操作在此处停止,控制台的 系统 输出会说明该参数的类型错误。空的文本字段会作为空文本运行,对于某些内置函数(文件名、要查找的窗口标题)而言,这意味着该步骤什么也不做。

消息原因解决方法
此值为必填项。设置变量 步骤的变量名称为空。键入一个名称。
请输入整数(十进制或 0x 十六进制)、命名常量,或一个 $变量。整数字段或 次数 中包含其他内容,例如 2.5 或 ten。键入数字(可带负号)、0x 加十六进制数,或命名常量(例如 VirtualKey.F5)(步骤参数)。
不存在此名称的命名常量。请检查拼写和大小写,例如 VirtualKey.MediaPlayPause。整数或数字字段,或 次数 中包含一个带点的名称(例如 VirtualKey.Mediaplaypause),但它不是命名常量。更正名称。大小写有区别。名称列在命名常量中。
请输入数字,或一个 $变量。数字字段中包含的不是数字。使用句点作为小数点,不使用千位分隔符:1234.5。
请输入 true 或 false,或一个 $变量。设置变量 步骤的 真或假 值中包含其他内容。键入 true 或 false。
步骤不能在参数内运行内置函数。请先将其移入变量。字段中包含一个括号内有内容的内置函数调用,例如 WindowGetTitle($w)。单击字段下方的 移入变量(步骤参数)。如果没有提供该链接,请自行为该调用添加一个步骤,保存其结果,然后使用该变量。
请使用字母、数字和 _,且不能以数字开头。将结果另存为 或 变量 中的变量名称包含其他字符,或以数字开头。重命名它(变量)。
此名称为保留名称。请另选一个。变量名称是 if、else、for、true 或 false。另选一个名称。
请选择要检查其结果的内置函数。设为 内置函数的结果 的条件尚未选择内置函数。单击 选择内置函数… 并选择一个。
“…”不能用于组合键。按键 框收到了组合键无法表示的按键,例如媒体键。使用其他按键,或使用 按下并释放键 步骤(KeyboardPressKey)(媒体键)。

当调用无法读取时(例如它包含 + 之类的运算符),或者在 当…时重复 或 重复直到 的条件中,不会提供 移入变量。

有一条说明不是问题:当 设置变量 的值类型为 文本,并且是一个括号内有内容的内置函数调用(例如 WindowGetTitle($w))时,其下方会显示 此内容作为文本存储,不会运行。若要保留内置函数的结果,请在该内置函数的步骤上使用“将结果另存为”。 该值会按这些字符原样保存。括号为空的调用(例如 ClipboardGetText())不会显示说明:它是值菜单中的一个读取值(变量)。

步骤行上​

标记原因解决方法
不在重复块内退出循环 步骤位于所有重复之外,通常是在移动之后。它在那里时操作无法运行。将其移回某个重复内,或将其删除(重复步骤)。

步骤未保存​

步骤未保存: 后跟原因,表示编辑器无法将您的步骤行写回操作。在您修复之前,操作会保留其上次保存的步骤,您的其余编辑也会等待。

原因产生原因解决方法
某个条件未选择内置函数如果 或 当…时重复/重复直到 设为 内置函数的结果,但没有内置函数。选择内置函数,或将 检查 切换为其他类型。
某个条件的 value 是调用(…);需要先将其赋给变量条件的 值 或比较的某一侧包含一个带参数的内置函数调用。在上方添加一个以 将结果另存为 运行该调用的步骤,并在条件中使用该变量。
内置函数 的参数 N 是调用(…);需要先将其赋给变量步骤的字段中包含一个带参数的内置函数调用。N 从 1 开始计数步骤的字段。移入变量(步骤参数)。
步骤 N 有一个无效的字段步骤 N 的某个字段中包含未通过检查的键入文本(字段下方):整数或数字字段中的 abc、不是命名常量的名称、包含其他文本的真或假字段、无效的 次数,或不允许的变量名称。空字段永远不会导致此问题。N 从 1 开始计数步骤。修复消息所在的字段。

步骤无法以列表显示时​

有时步骤以步骤列表无法显示的文本形式存在:它们是在代码视图中编辑的、导入的,或在配置文件中手动编写的。这时列表会被以下内容取代:

这些步骤使用了无法以列表形式显示的流程控制(原因)。可以在高级模式下以代码形式编辑。

这会发生在每个步骤编辑器中:操作的、代码片段的、沙盒 的、应用程序组的前置和后置操作的,以及全局事件的。

这些步骤仍会按原样运行;只是编辑器无法将它们显示为行。在高级模式下,代码视图会显示该文本,并且这是编辑它的唯一方式(代码视图)。一旦文本重新具有列表形式,步骤行就会回来。文本形式在步骤引擎中介绍。

原因 为以下之一。斜体文字 表示原因所引用的您文本中的部分。

整个文本​

原因在文本中要修复的内容
步骤不是有效的 TOML:消息文本不是有效的 TOML。消息会指出位置。
没有 [[steps]] 数组文本中没有 [[steps]] 表。
顶层键 键 不是简单值第一个 [[steps]] 之上的某个键包含表或列表。那里只能放简单值。
某个步骤使用了 op op,它没有列表形式某个步骤的 op 是列表无法显示的类型。
某个步骤使用了 if 的 goto 形式,它没有列表形式某个 if 使用 then_goto 或 else_goto 跳转,或者存在 goto 步骤。请用 if 块和 end_if 改写,或继续以文本形式编辑。
某个 if 步骤没有条件某个 if 步骤没有 condition。

单个步骤​

原因在文本中要修复的内容
某个 call 步骤没有 fn某个 call 步骤未指定内置函数。
某个 set 步骤没有 local某个 set 步骤未指定变量。
某个 set 步骤的 call 没有 fn某个 set 步骤的 call 未指定内置函数。
某个 set 步骤的 value 不是单个值某个 set 步骤的 value 是列表,或者是读取值({ fn = "Name" })或命名常量({ const = "Namespace.Name" })以外的表。
某个 set 步骤的 value 是文本 文本,列表会将其保存为该内置函数的结果某个 set 步骤的 value 是一个可解读为读取值的带引号文本,例如 "ClipboardGetText()"。要存储该读取值的结果,请写成 { fn = "ClipboardGetText" };否则请更改文本。
某个 set 步骤既没有 value 也没有 call某个 set 步骤没有要存储的内容。
repeat 步骤需要 times、while 或 until 中的恰好一个某个 repeat 步骤一个都没有,或者有多个。
某个 repeat 步骤的 times 是以文本存储的数字、命名常量或内置函数调用,列表会将其保存为数字、常量或该内置函数的结果times 用引号书写,例如 "3"、"MouseButton.Middle" 或 "MouseGetCursorX()"。请将数字写成不带引号的形式,将常量写成 { const = "MouseButton.Middle" },将读取值写成 { fn = "MouseGetCursorX" }。
某个 repeat 步骤的 times 既不是整数也不是文本times 是 2.5 或 true 之类的值。
某个条件不是表condition、while 或 until 不是表。
条件需要 fn、value 或 compare 中的恰好一个条件一个都没有,或者有多个。
某个条件的 not 既不是 true 也不是 falsenot 包含 true 或 false 以外的内容。
某个条件的 fn 为空条件的 fn 为空文本。
某个条件的 compare 不是受支持的比较compare 不是 ==、!=、<、<=、>、>= 之一。
比较需要同时有 left 和 right比较缺少 left 或 right。
某个条件的操作数不是单个值value、left 或 right 是列表,或者是读取值或命名常量以外的表。
某个条件比较文本 文本,列表会将其保存为数字、命名常量、true/false 或内置函数的结果被比较的值用引号书写,但可解读为数字、命名常量、true/false 或读取值,例如 "3"、"MouseButton.Left" 或 "ClipboardGetText()"。列表无法将其保留为文本。请将读取值写成 { fn = "ClipboardGetText" },或更改文本。
args 不是数组某个步骤的 args 不是列表。
某个参数不是单个值某个参数是列表,或者是读取值({ fn = "Name" })或命名常量({ const = "Namespace.Name" })以外的表。
某个值指定了不存在的常量 文本{ const = "…" } 包含的名称不是命名常量,或者不是文本。请更正名称;大小写有区别。

不匹配的块​

N 是步骤的位置,从 1 开始计数。

原因在文本中要修复的内容
步骤 N 是 if 块之外的 else一个之前没有已打开 if 的 else。
步骤 N 是同一 if 块中的第二个 else一个 if 块有两个 else 步骤。
步骤 N 关闭了一个未打开的块一个没有对应已打开块的 end_if 或 end_repeat。
步骤 N 打开的块从未关闭一个没有 end_if 或 end_repeat 的 if 或 repeat。

编辑器周围的通知​

通知含义
此方式下尚未设置任何内容,因此运行时不会执行任何操作。“方式”中的内容会保留,但不会运行。编写方式 设为一个空的方式,而另一种方式有内容。单击 使用“<方式>” 即可切换回去(步骤、脚本和 AutoHotkey)。
AutoHotkey 支持已在常规设置中关闭,因此在启用之前此操作不会执行任何内容。该操作以 AutoHotkey 方式运行,而 AutoHotkey 已关闭(AutoHotkey)。
没有已注册的插件提供“引擎”引擎,因此此脚本在运行时会被跳过。请在“插件”页面上添加该插件,或选择其他方式。该操作在某个插件的引擎上运行,而该插件未注册(插件)。