调用内置函数
- 参数按位置传递,且每个参数都是必需的。没有任何内置函数接受可选参数、命名参数或可变数量的参数。参考中的参数名称仅作标识之用。
- 参数个数在脚本编译时检查,因此个数错误会使脚本在任何内容运行之前就停止。
- 参数类型在调用运行时检查,必须完全匹配,只有一种扩展例外。在声明为 Real 的位置传入 Integer 会转换为该 Real(
MathSqrt(16)有效),与算术运算中的规则相同。在声明为 Integer 的位置传入 Real,或在声明为 Text 的位置传入数字(UtilityPrint(42)),会使操作停止,并报告 名称:参数 N 的类型错误。显示为 Any 的参数接受任何类型。 - 每个内置函数都会返回一个值。大多数操作类内置函数返回一个表示“是否成功”的 Bool,您可以忽略它,也可以对其进行测试。
- 找不到的东西是正常结果,而不是错误。找不到的窗口是一个空 Window。将空 Window 或已关闭的窗口传给
Window*内置函数不会执行任何操作,并返回false、0或"",因此对未找到的句柄连续调用窗口函数是安全的。上下文内置函数在其触发器之外返回""、0、-1或空 Window。 - 多个结果采用“先枚举、再按索引读取”的方式。像
WindowGetAllTopLevel()、FolderEnumerateAll(…)、StringSplit(…)或DisplayMonitorEnumeratedAll()这样的调用会返回一个数量,然后由对应的…EnumeratedAt(i)/…PartAt(i)读取第i项,范围从0到数量 − 1。每个系列在每次脚本运行中有一个缓存,该系列中的下一次枚举调用会替换它。 - 插件可以提供自己的内置函数,其调用方式完全相同。如果脚本编译时该插件未连接,脚本将不会运行,并会有一条通知说明原因。
n = WindowGetAllTopLevel(); // 数量,同时填充窗口缓存
for (i = 0; i < n; i = i + 1) {
w = WindowGetEnumeratedAt(i); // 该缓存中的第 i 项
if (WindowGetVisible(w) && WindowGetTitle(w)) {
UtilityPrint(WindowGetExecutableName(w) + " - " + WindowGetTitle(w));
}
}