内置函数签名
所有内置函数,按领域分组。每一行按顺序显示参数名称和类型,以及返回的类型。简单标记的是配置界面的简单模式中提供的内置函数。示例会将示例库筛选为调用该内置函数的脚本。编辑器的自动完成工具提示显示相同的签名。
AutoHotkey
AutoHotkeyExecuteScript
AutoHotkeyExecuteScript(script: Text) → Integer · 简单
使用设置中指定的 AutoHotkey 程序运行 AutoHotkey v2 代码,并等待其退出。触发器的上下文以变量形式传入,输出行以 AHK: 前缀打印。
参数
script: Text— 要运行的 AutoHotkey v2 脚本文本。停止该操作会结束 AutoHotkey 进程。
返回值
AutoHotkey 的退出代码;如果 AutoHotkey 支持已关闭、其程序路径未设置或找不到,或程序启动失败,则返回 -1。
1 个示例: 交给 AutoHotkey 处理
Capture
CaptureSaveRegion
CaptureSaveRegion(fileName: Text, x: Integer, y: Integer, width: Integer, height: Integer) → Bool
捕获屏幕上的一个矩形区域并将其另存为图像文件。会先从屏幕上移除本应用自身的手势轨迹和提示,为此最多等待 250 毫秒。
参数
fileName: Text— 要写入的图像文件的路径。其扩展名(.bmp、.png、.jpg 或 .jpeg)决定格式。现有文件将被覆盖;不会创建缺失的文件夹。x: Integer— 矩形的左边缘,以屏幕像素为单位。y: Integer— 矩形的上边缘,以屏幕像素为单位。width: Integer— 矩形的宽度,以像素为单位。必须大于 0。height: Integer— 矩形的高度,以像素为单位。必须大于 0。
返回值
如果已写入图像文件,则为 true;如果 width 或 height 不是正数、捕获失败或无法写入文件,则为 false。如果 fileName 不以 .bmp、.png、.jpg 或 .jpeg 结尾,脚本将因错误而停止。
1 个示例: 截取您圈出的区域
CaptureShowImage
CaptureShowImage(fileName: Text) → Bool
在一个无边框、始终置顶的预览窗口中按原始大小显示图像文件,该窗口在光标所在的显示器上居中。拖动可移动窗口,双击可关闭,右键单击可使用“复制”“保存”和“关闭”。
参数
fileName: Text— 要显示的 .bmp、.png、.jpg 或 .jpeg 文件的路径。
返回值
如果图像已加载且其预览窗口正在打开,则为 true;如果文件不存在或不是可读取的图像,则为 false。如果 fileName 不以 .bmp、.png、.jpg 或 .jpeg 结尾,脚本将因错误而停止。
CaptureShowRegion
CaptureShowRegion(x: Integer, y: Integer, width: Integer, height: Integer) → Bool
捕获屏幕上的一个矩形区域,并在一个无边框、始终置顶、恰好覆盖该区域的预览窗口中显示其副本。会先移除本应用自身的手势轨迹和提示,最多等待 250 毫秒。
参数
x: Integer— 矩形的左边缘,以屏幕像素为单位。y: Integer— 矩形的上边缘,以屏幕像素为单位。width: Integer— 矩形的宽度,以像素为单位。必须大于 0。height: Integer— 矩形的高度,以像素为单位。必须大于 0。
返回值
如果捕获成功且其预览窗口正在打开,则为 true;如果 width 或 height 不是正数或无法捕获屏幕,则为 false。
Clipboard
ClipboardClear
ClipboardClear() → Bool
清空剪贴板,删除文本、图像及所有其他格式,且不放入任何新内容。
参数
无参数。
返回值
如果剪贴板已清空,则为 true;如果其他程序一直占用剪贴板,则为 false。
1 个示例: 将所选文本转为大写
ClipboardCopySelection
ClipboardCopySelection(timeoutMs: Integer) → Text · 简单
向活动窗口发送 Ctrl+C 并返回复制的文本,发送前先等待 Ctrl、Shift、Alt 和 Windows 键被释放。复制的内容会替换剪贴板;若要保留原内容,请使用 ClipboardSave 和 ClipboardRestore。
参数
timeoutMs: Integer— 等待这些键被释放以及复制内容到达的总时间,以毫秒为单位,范围为 0 到 60000。更大的值按 60000 计算。1000 适用于大多数程序。
返回值
复制的文本;如果在 timeoutMs 用完之前这些键一直被按住、未复制任何内容(没有选定内容)或复制的内容不含文本,则返回空文本。
1 个示例: 在网上搜索所选文本
ClipboardGetHtml
ClipboardGetHtml() → Text
返回剪贴板上的 HTML,例如在浏览器中复制网页的一部分时浏览器放入剪贴板的内容。
参数
无参数。
返回值
复制的 HTML 片段(不含剪贴板的 HTML 标头);如果剪贴板不含 HTML 或正忙,则返回空文本。
ClipboardGetRtf
ClipboardGetRtf() → Text
返回剪贴板上的 RTF 格式文本,例如在文字处理程序中复制带格式的文本时放入剪贴板的内容。
参数
无参数。
返回值
以文本形式返回的 RTF 标记;如果剪贴板不含 RTF 或正忙,则返回空文本。
ClipboardGetSequenceNumber
ClipboardGetSequenceNumber() → Integer
返回一个数字,剪贴板内容每次更改时 Windows 都会更改该数字。在执行应当产生复制的操作之前读取它,然后进行比较,即可知道复制内容是否已到达。
参数
无参数。
返回值
当前的剪贴板序列号。只有该数字的变化有意义,其值本身没有意义。
ClipboardGetText
ClipboardGetText() → Text · 简单
返回剪贴板上当前的纯文本。剪贴板上的格式、图像和文件将被忽略。
参数
无参数。
返回值
剪贴板文本;如果剪贴板不含文本或其他程序一直占用剪贴板,则返回空文本。
6 个示例: 用正则表达式从复制的文本中提取值, 统计剪贴板中的单词数, 将剪贴板中的多行合并为一行, 今天的日期,以及带时间戳的文件名, 将所选文本转为大写, 在网上搜索所选内容
ClipboardLoadImage
ClipboardLoadImage(path: Text) → Bool
加载图像文件并将其放入剪贴板,替换当前内容,以便粘贴到其他程序中。PNG 的透明区域会变为白色。
参数
path: Text— 图像文件的完整路径,以 .bmp、.png、.jpg 或 .jpeg 结尾。任何其他扩展名都会使脚本因错误而停止。
返回值
如果图像已在剪贴板上,则为 true;如果文件不存在、不是可读取的图像或剪贴板正忙,则为 false。
ClipboardPasteReplacementText
ClipboardPasteReplacementText(text: Text) → Bool · 简单
将文本放入剪贴板并发送 Ctrl+V,将其粘贴到活动窗口中。不会等待粘贴完成,因此请在 ClipboardRestore 之前用 UtilityWait 稍作等待。
参数
text: Text— 要粘贴的文本。
返回值
如果已设置剪贴板并已发送 Ctrl+V,则为 true;如果剪贴板正忙或 Windows 阻止了击键,则为 false。
ClipboardRestore
ClipboardRestore() → Bool
以所有格式放回本次脚本运行中最近一次 ClipboardSave 保存的剪贴板内容。如果本次运行中之前没有调用过 ClipboardSave,则清空剪贴板。
参数
无参数。
返回值
如果保存的所有内容都已放回,则为 true;如果剪贴板正忙或某种格式无法还原,则为 false。
5 个示例: 填充模板并粘贴, 在网上搜索所选文本, 将所选文本转为大写, 在网上搜索所选内容, 每次只让一个操作运行某段代码
ClipboardSave
ClipboardSave() → Bool
以所有格式保存剪贴板上全部内容的副本,以便 ClipboardRestore 稍后在同一次脚本运行中将其放回。再次调用会替换已保存的副本。
参数
无参数。
返回值
如果已读取剪贴板,则为 true;如果其他程序一直占用剪贴板,则为 false。
5 个示例: 填充模板并粘贴, 在网上搜索所选文本, 将所选文本转为大写, 在网上搜索所选内容, 每次只让一个操作运行某段代码
ClipboardSaveImage
ClipboardSaveImage(path: Text) → Bool
将剪贴板上的图像(例如用 Print Screen 截取的屏幕截图)按文件扩展名指定的格式保存到文件中。现有文件将被覆盖。
参数
path: Text— 要写入的文件的完整路径,以 .bmp、.png、.jpg 或 .jpeg 结尾。任何其他扩展名都会使脚本因错误而停止。
返回值
如果已写入文件,则为 true;如果剪贴板不含图像或无法写入文件,则为 false。
1 个示例: 将复制的图像保存到文件
ClipboardSetHtml
ClipboardSetHtml(html: Text) → Bool
将 HTML 片段放入剪贴板,替换当前内容,以便粘贴到电子邮件或文字处理程序中时保留格式。同时还会添加一份去除了标记的纯文本副本,供只能粘贴文本的程序使用。
参数
html: Text— 要放入的 HTML 片段,例如 <b>bold</b> 文本。请勿添加剪贴板的 HTML 标头;系统会自动添加。
返回值
如果已将 HTML 及其纯文本副本放入剪贴板,则为 true;如果剪贴板正忙,则为 false。
ClipboardSetRtf
ClipboardSetRtf(rtf: Text) → Bool
将 RTF 格式文本放入剪贴板,替换当前内容,以便粘贴到写字板、Word 或 Outlook 中时保留格式。同时还会添加一份只含文字的纯文本副本,供只能粘贴文本的程序使用。
参数
rtf: Text— 以文本形式表示的完整 RTF 文档。任何字符都可以直接键入;纯 ASCII 之外的字符会自动写成 RTF Unicode 转义序列。
返回值
如果已将 RTF 及其纯文本副本放入剪贴板,则为 true;如果剪贴板正忙,则为 false。
ClipboardSetText
ClipboardSetText(text: Text) → Bool · 简单
将文本放入剪贴板,替换其中的任何内容,以便粘贴到任何程序中。
参数
text: Text— 要放入剪贴板的文本。
返回值
如果已将文本放入剪贴板,则为 true;如果其他程序一直占用剪贴板,则为 false。
2 个示例: 用正则表达式从复制的文本中提取值, 将剪贴板中的多行合并为一行
Context
ContextGetActionName
ContextGetActionName() → Text
返回正在运行的操作的名称。全局事件返回 Global_Event_ 后跟事件的 ID,例如 Global_Event_release。
参数
无参数。
返回值
操作的名称;全局事件返回 Global_Event_ 名称;在计时器、文件夹监视或串口监视器脚本中返回空文本。
1 个示例: 触发上下文知道的一切
ContextGetApplicationName
ContextGetApplicationName() → Text
对于由手势、热键或文本扩展触发的操作,返回正在运行该操作的应用程序组的名称。
参数
无参数。
返回值
应用程序组的名称(全局组通常为 Global);对于全局事件、计时器、文件夹监视或串口监视器脚本,返回空文本。
4 个示例: 填充模板并粘贴, 触发上下文知道的一切, 放行未识别的绘制, 追加到日志文件
ContextGetBoundingBoxHeight
ContextGetBoundingBoxHeight() → Integer
返回包围整个所绘手势的矩形的高度,以像素为单位。在手势之外返回 0。
参数
无参数。
返回值
以像素为单位的高度;在手势之外为 0。
2 个示例: 触发上下文知道的一切, 截取您圈出的区域
ContextGetBoundingBoxWidth
ContextGetBoundingBoxWidth() → Integer
返回包围整个所绘手势的矩形的宽度,以像素为单位。在手势之外返回 0。
参数
无参数。
返回值
以像素为单位的宽度;在手势之外为 0。
2 个示例: 触发上下文知道的一切, 截取您圈出的区域
ContextGetBoundingBoxX
ContextGetBoundingBoxX() → Integer
返回包围整个所绘手势的矩形的左边缘,以虚拟屏幕像素为单位。在手势之外返回 0。
参数
无参数。
返回值
以虚拟屏幕像素为单位的左边缘;在手势之外为 0。
2 个示例: 触发上下文知道的一切, 截取您圈出的区域
ContextGetBoundingBoxY
ContextGetBoundingBoxY() → Integer
返回包围整个所绘手势的矩形的上边缘,以虚拟屏幕像素为单位。在手势之外返回 0。
参数
无参数。
返回值
以虚拟屏幕像素为单位的上边缘;在手势之外为 0。
2 个示例: 触发上下文知道的一切, 截取您圈出的区域
ContextGetButtonState
ContextGetButtonState() → Text
返回全局鼠标按钮事件是在按下按钮时还是在释放按钮时触发的。只有全局鼠标按钮事件的脚本才会获得值。
参数
无参数。
返回值
按下时为 'down',释放时为 'up';对于任何其他触发方式(包括手势),返回空文本。
ContextGetControl
ContextGetControl() → Window
返回触发器所针对的确切控件,例如手势或鼠标下方的编辑框,或者热键或文本扩展触发时具有焦点的窗口。若要获取其应用程序窗口,请使用 ContextGetWindow。
参数
无参数。
返回值
以 Window 形式返回的控件;当触发器没有窗口时(例如在计时器、文件夹监视、串口监视器或 Load 脚本中),返回空窗口。
ContextGetGestureName
ContextGetGestureName() → Text
返回为运行此操作而绘制的手势的名称。这是手势本身的名称,而不是操作的名称;请参阅 ContextGetActionName。
参数
无参数。
返回值
手势的名称;在手势之外返回空文本。
2 个示例: 触发上下文知道的一切, 追加到日志文件
ContextGetPointCount
ContextGetPointCount() → Integer
返回沿所绘手势记录的光标位置数。使用 ContextGetPointX 和 ContextGetPointY 逐个读取。
参数
无参数。
返回值
点的数量;在手势之外为 0。
3 个示例: 手势笔画的长度, 触发上下文知道的一切, 笔画朝哪个方向?
ContextGetPointX
ContextGetPointX(index: Integer) → Integer
返回所绘手势中一个已记录点的水平屏幕位置,以虚拟屏幕像素为单位。
参数
index: Integer— 从 0 开始的点编号,范围为 0 到 ContextGetPointCount() 减 1。点 0 是手势的起点。
返回值
x 坐标;如果 index 超出范围或该操作不是由手势触发的,则为 0。
ContextGetPointY
ContextGetPointY(index: Integer) → Integer
返回所绘手势中一个已记录点的垂直屏幕位置,以虚拟屏幕像素为单位。
参数
index: Integer— 从 0 开始的点编号,范围为 0 到 ContextGetPointCount() 减 1。点 0 是手势的起点。
返回值
y 坐标;如果 index 超出范围或该操作不是由手势触发的,则为 0。
ContextGetSerialMonitorName
ContextGetSerialMonitorName() → Text
返回其接收到的行启动了此脚本的串口监视器的名称,即传给 SerialMonitorCreate 的名称。只有串口监视器的脚本才会获得值。
参数
无参数。
返回值
监视器的名称;对于任何其他触发方式,返回空文本。
ContextGetSerialPortName
ContextGetSerialPortName() → Text
返回接收到该行的 COM 端口,例如 COM3。只有串口监视器的脚本才会获得值。
参数
无参数。
返回值
端口名称;对于任何其他触发方式,返回空文本。
ContextGetSerialTextLine
ContextGetSerialTextLine() → Text
返回到达串口并启动此脚本的文本行,例如 Arduino 用 Serial.println 发送的传感器读数。行尾符已被移除。
参数
无参数。
返回值
不含终止符的接收行;对于任何其他触发方式,返回空文本。
2 个示例: 将串口设备的按钮映射到媒体键, 将 Arduino 旋钮变成音量控制
ContextGetStrokeButton
ContextGetStrokeButton() → Integer
以 MouseButton 常量的形式返回绘制手势或触发全局鼠标按钮事件的鼠标按钮:对于 Windows 视为左键单击和右键单击的按钮(经过任何主/次按钮交换之后),为 MouseButton.Primary 或 MouseButton.Secondary,否则为 MouseButton.Middle、MouseButton.X1 或 MouseButton.X2。将其传给 MouseClick 或 MouseButtonDown 即可按下同一个按钮。
参数
无参数。
返回值
一个 MouseButton 值,例如 MouseButton.Secondary;对于任何其他触发方式,为 -1。
2 个示例: 触发上下文知道的一切, 按笔画按钮分支
ContextGetWatchAction
ContextGetWatchAction() → Text
返回被监视的文件夹中发生了什么而启动了此脚本:'created'、'deleted'、'modified'、'renamed-old-name'、'renamed-new-name' 或 'overflow'。
参数
无参数。
返回值
更改的类型;对于任何其他触发方式,返回空文本。'overflow' 表示一次到达的更改过多,必须重新检查该文件夹。
1 个示例: 监视文件夹
ContextGetWatchName
ContextGetWatchName() → Text
返回启动此脚本的文件夹监视的名称,即传给 FolderWatchCreate 的名称。只有文件夹监视的脚本才会获得值。
参数
无参数。
返回值
监视的名称;对于任何其他触发方式,返回空文本。
ContextGetWatchPath
ContextGetWatchPath() → Text
返回发生更改并启动此文件夹监视脚本的文件或文件夹的路径,相对于被监视的文件夹。
参数
无参数。
返回值
已更改项相对于被监视文件夹的路径;对于 'overflow' 更改或任何其他触发方式,返回空文本。
1 个示例: 监视文件夹
ContextGetWindow
ContextGetWindow() → Window
返回触发器所针对的应用程序窗口:手势或鼠标下方控件所在的顶级窗口,或者热键或文本扩展触发时具有焦点的控件所在的顶级窗口。
参数
无参数。
返回值
该窗口;当触发器没有窗口时(例如在计时器、文件夹监视、串口监视器或 Load 脚本中),返回空窗口。
16 个示例: 一个手势,多个选项, 切换手势所在窗口的最大化状态, 将窗口置顶, 循环切换窗口透明度, 将窗口贴靠到光标下方的 3×2 网格单元格中, 将窗口移到下一个显示器, 记住并还原窗口位置, 检查窗口的子控件, 将窗口隐藏到托盘, 触发上下文知道的一切, 按笔画按钮分支, 将光标限制在窗口内 5 秒, 按住 Ctrl 时改变行为, 保存在 Storage 中的列表, 将窗口发送到指定的显示器, 将代码片段用作可重用函数
ContextRelayGesture
ContextRelayGesture() → Bool
使用同一按钮沿同一路径,将所绘手势作为真实的鼠标拖动重放,使下方的应用程序接收到它,例如用于选择文本。拖动期间会暂缓真实输入。
参数
无参数。
返回值
如果已发送整个拖动,则为 true;如果在手势之外或 Windows 拒绝了部分输入,则为 false。
1 个示例: 放行未识别的绘制
DateTime
DateTimeFormat
DateTimeFormat(iso: Text, style: Integer) → Text · 简单
将日期和时间格式化为采用用户区域格式的可读文本,或格式化为可排序的 FileStamp。带有 Z 或 UTC 偏移量的时间会先转换为本地时间。
参数
iso: Text— ISO 8601 格式的日期和时间,与 DateTimeGetNow 返回的形式相同(2026-10-05T14:05:09-04:00)。仅有日期表示午夜;没有 Z 或偏移量时视为本地时间。年份为 1601 到 9999。style: Integer— 一个 DateTimeStyle 常量,例如 DateTimeStyle.ShortDate、DateTimeStyle.LongDateTime 或 DateTimeStyle.FileStamp。任何其他值都会使操作因错误而停止。
返回值
格式化后的文本,例如 DateTimeStyle.FileStamp 对应 20261005-140509;如果 iso 为空,则返回空文本。不是 ISO 8601 格式的文本会使操作因错误而停止。
1 个示例: 今天的日期,以及带时间戳的文件名
DateTimeGetNow
DateTimeGetNow() → Text · 简单
以 ISO 8601 文本形式返回当前的本地日期和时间,精确到秒,并带有 UTC 偏移量。可将其传给 DateTimeFormat 或 DateTimeGetPart。
参数
无参数。
返回值
例如 2026-10-05T14:05:09-04:00 这样的文本;如果 Windows 无法报告时区,则返回空文本。
1 个示例: 今天的日期,以及带时间戳的文件名
DateTimeGetPart
DateTimeGetPart(iso: Text, part: Integer) → Integer
以数字形式返回日期和时间的一个部分:年、月、日、时、分、秒或星期几,采用本地时间。
参数
iso: Text— ISO 8601 格式的日期和时间,与 DateTimeGetNow 返回的形式相同。带有 Z 或 UTC 偏移量的时间会转换为本地时间;没有时则视为本地时间。part: Integer— 一个 DateTimePart 常量,例如 DateTimePart.Hour 或 DateTimePart.Weekday。任何其他值都会使操作因错误而停止。
返回值
该部分的值:月为 1 到 12,小时为 0 到 23,星期几为 1(星期一)到 7(星期日)。如果 iso 为空,则为 -1。不是 ISO 8601 格式的文本会使操作因错误而停止。
1 个示例: 今天的日期,以及带时间戳的文件名
Display
DisplayGetMonitorDpiFromPoint
DisplayGetMonitorDpiFromPoint(x: Integer, y: Integer) → Integer
返回 Windows 当前为包含某个屏幕点的显示器所使用的 DPI。不在任何显示器上的点使用最近的显示器。
参数
x: Integer— 水平屏幕位置,以像素为单位。y: Integer— 垂直屏幕位置,以像素为单位。
返回值
DPI,例如缩放比例为百分之一百时为 96,百分之一百五十时为 144。如果 Windows 无法报告,则为系统 DPI。
DisplayGetPixelColorFromPoint
DisplayGetPixelColorFromPoint(x: Integer, y: Integer) → Integer
返回某个点处屏幕像素的颜色,即该像素当前在显示器上显示的颜色。
参数
x: Integer— 像素的水平屏幕位置,以像素为单位。y: Integer— 像素的垂直屏幕位置,以像素为单位。
返回值
以 0xRRGGBB 形式打包的 Integer 颜色值(红色位于最高字节,蓝色位于最低字节);如果该点不在任何显示器上或无法读取屏幕,则为 -1。
1 个示例: 读取光标下的像素颜色
DisplayMonitorEnumeratedAll
DisplayMonitorEnumeratedAll() → Integer
为所有已连接的显示器创建快照,按从左到右、再从上到下的顺序排列,供 DisplayMonitorGetEnumerated 系列内置函数按索引读取。显示器发生变化后请再次调用。
参数
无参数。
返回值
快照中的显示器数量。有效索引的范围为 0 到此数量减 1。
2 个示例: 列出显示器, 将窗口发送到指定的显示器
DisplayMonitorExistsByName
DisplayMonitorExistsByName(name: Text) → Bool
检查按名称保存的显示器当前是否已连接。请在 FromName 系列矩形内置函数之前使用它,因为这些函数对于缺失的显示器和真实的 0 坐标都返回 0。
参数
name: Text— 显示器设备路径(可靠的选择,可从 DisplayMonitorGetDevicePathFromPoint 获取)或型号名称,例如 DELL U2720Q。不区分大小写;设备路径完全匹配优先于型号名称。
返回值
如果有已连接的显示器与该名称匹配,则为 true;如果没有匹配的显示器或 name 为空,则为 false。
DisplayMonitorGetDevicePathFromPoint
DisplayMonitorGetDevicePathFromPoint(x: Integer, y: Integer) → Text
返回包含某个屏幕点的显示器的设备路径:一个可以保存、稍后传给 FromName 系列内置函数的唯一名称。如果将显示器改接到其他视频端口,该路径会改变。
参数
x: Integer— 水平屏幕位置,以像素为单位。y: Integer— 垂直屏幕位置,以像素为单位。
返回值
设备路径;如果 Windows 无法识别该显示器,则返回空文本。不在任何显示器上的点使用最近的显示器。
DisplayMonitorGetEnumeratedDevicePathAt
DisplayMonitorGetEnumeratedDevicePathAt(index: Integer) → Text
返回最近一次 DisplayMonitorEnumeratedAll 快照中某个显示器的设备路径,即一个可以保存的唯一名称。
参数
index: Integer— 显示器在最近一次 DisplayMonitorEnumeratedAll 快照中从 0 开始的位置(从左到右,再从上到下)。
返回值
设备路径;如果 index 超出范围或自快照以来显示器已发生变化,则返回空文本。
DisplayMonitorGetEnumeratedDpiAt
DisplayMonitorGetEnumeratedDpiAt(index: Integer) → Integer
返回最近一次 DisplayMonitorEnumeratedAll 快照中某个显示器在创建快照时的 DPI。
参数
index: Integer— 显示器在最近一次 DisplayMonitorEnumeratedAll 快照中从 0 开始的位置(从左到右,再从上到下)。
返回值
DPI,例如缩放比例为百分之一百时为 96,百分之一百五十时为 144;如果 index 超出范围,则为 0。
1 个示例: 列出显示器
DisplayMonitorGetEnumeratedFriendlyNameAt
DisplayMonitorGetEnumeratedFriendlyNameAt(index: Integer) → Text
返回最近一次 DisplayMonitorEnumeratedAll 快照中某个显示器报告的型号名称,例如 DELL U2720Q。两台相同的显示器报告相同的名称。
参数
index: Integer— 显示器在最近一次 DisplayMonitorEnumeratedAll 快照中从 0 开始的位置(从左到右,再从上到下)。
返回值
型号名称;如果 index 超出范围、显示器未报告名称(笔记本电脑内置屏幕常见此情况),或自快照以来显示器已发生变化,则返回空文本。
1 个示例: 列出显示器
DisplayMonitorGetEnumeratedHeightAt
DisplayMonitorGetEnumeratedHeightAt(index: Integer, workArea: Bool) → Integer
返回最近一次 DisplayMonitorEnumeratedAll 快照中某个显示器在创建快照时的高度,可以是其完整区域,也可以是其工作区。
参数
index: Integer— 显示器在最近一次 DisplayMonitorEnumeratedAll 快照中从 0 开始的位置(从左到右,再从上到下)。workArea: Bool— true 表示工作区,即不包括任务栏和停靠工具栏的区域;false 表示整个显示器。
返回值
以像素为单位的高度;如果 index 超出范围,则为 0。
1 个示例: 列出显示器
DisplayMonitorGetEnumeratedWidthAt
DisplayMonitorGetEnumeratedWidthAt(index: Integer, workArea: Bool) → Integer
返回最近一次 DisplayMonitorEnumeratedAll 快照中某个显示器在创建快照时的宽度,可以是其完整区域,也可以是其工作区。
参数
index: Integer— 显示器在最近一次 DisplayMonitorEnumeratedAll 快照中从 0 开始的位置(从左到右,再从上到下)。workArea: Bool— true 表示工作区,即不包括任务栏和停靠工具栏的区域;false 表示整个显示器。
返回值
以像素为单位的宽度;如果 index 超出范围,则为 0。
1 个示例: 列出显示器
DisplayMonitorGetEnumeratedXAt
DisplayMonitorGetEnumeratedXAt(index: Integer, workArea: Bool) → Integer
返回最近一次 DisplayMonitorEnumeratedAll 快照中某个显示器在创建快照时的左边缘,可以是其完整区域的,也可以是其工作区的。
参数
index: Integer— 显示器在最近一次 DisplayMonitorEnumeratedAll 快照中从 0 开始的位置(从左到右,再从上到下)。workArea: Bool— true 表示工作区,即不包括任务栏和停靠工具栏的区域;false 表示整个显示器。
返回值
以屏幕像素为单位的左边缘(位于主显示器左侧的显示器为负数);如果 index 超出范围,则为 0。0 也可能是真实的边缘,因此请将 index 与显示器数量进行比较。
DisplayMonitorGetEnumeratedYAt
DisplayMonitorGetEnumeratedYAt(index: Integer, workArea: Bool) → Integer
返回最近一次 DisplayMonitorEnumeratedAll 快照中某个显示器在创建快照时的上边缘,可以是其完整区域的,也可以是其工作区的。
参数
index: Integer— 显示器在最近一次 DisplayMonitorEnumeratedAll 快照中从 0 开始的位置(从左到右,再从上到下)。workArea: Bool— true 表示工作区,即不包括任务栏和停靠工具栏的区域;false 表示整个显示器。
返回值
以屏幕像素为单位的上边缘(位于主显示器上方的显示器为负数);如果 index 超出范围,则为 0。0 也可能是真实的边缘,因此请将 index 与显示器数量进行比较。
DisplayMonitorGetFriendlyNameFromPoint
DisplayMonitorGetFriendlyNameFromPoint(x: Integer, y: Integer) → Text
返回包含某个屏幕点的显示器的型号名称,例如 DELL U2720Q。该名称易读但不唯一:两台相同的显示器报告相同的名称。
参数
x: Integer— 水平屏幕位置,以像素为单位。y: Integer— 垂直屏幕位置,以像素为单位。
返回值
型号名称;如果显示器未报告名称(笔记本电脑内置屏幕常见此情况),则返回空文本。不在任何显示器上的点使用最近的显示器。
DisplayMonitorGetRectHeightFromName
DisplayMonitorGetRectHeightFromName(name: Text, workArea: Bool) → Integer
返回按已保存的设备路径或型号名称找到的已连接显示器的高度,可以是其完整区域,也可以是其工作区。
参数
name: Text— 显示器设备路径(可靠的选择)或型号名称,例如 DELL U2720Q。不区分大小写;设备路径完全匹配优先于型号名称。workArea: Bool— true 表示工作区,即不包括任务栏和停靠工具栏的区域;false 表示整个显示器。
返回值
以像素为单位的高度;如果没有已连接的显示器与该名称匹配,则为 0。
DisplayMonitorGetRectHeightFromPoint
DisplayMonitorGetRectHeightFromPoint(x: Integer, y: Integer, workArea: Bool) → Integer
返回包含某个屏幕点的显示器的高度,可以是其完整区域,也可以是其工作区。不在任何显示器上的点使用最近的显示器。
参数
x: Integer— 水平屏幕位置,以像素为单位。y: Integer— 垂直屏幕位置,以像素为单位。workArea: Bool— true 表示工作区,即不包括任务栏和停靠工具栏的区域;false 表示整个显示器。
返回值
以像素为单位的高度。
2 个示例: 将活动窗口贴靠到其所在显示器的左半边, 将窗口贴靠到光标下方的 3×2 网格单元格中
DisplayMonitorGetRectWidthFromName
DisplayMonitorGetRectWidthFromName(name: Text, workArea: Bool) → Integer
返回按已保存的设备路径或型号名称找到的已连接显示器的宽度,可以是其完整区域,也可以是其工作区。
参数
name: Text— 显示器设备路径(可靠的选择)或型号名称,例如 DELL U2720Q。不区分大小写;设备路径完全匹配优先于型号名称。workArea: Bool— true 表示工作区,即不包括任务栏和停靠工具栏的区域;false 表示整个显示器。
返回值
以像素为单位的宽度;如果没有已连接的显示器与该名称匹配,则为 0。
DisplayMonitorGetRectWidthFromPoint
DisplayMonitorGetRectWidthFromPoint(x: Integer, y: Integer, workArea: Bool) → Integer
返回包含某个屏幕点的显示器的宽度,可以是其完整区域,也可以是其工作区。不在任何显示器上的点使用最近的显示器。
参数
x: Integer— 水平屏幕位置,以像素为单位。y: Integer— 垂直屏幕位置,以像素为单位。workArea: Bool— true 表示工作区,即不包括任务栏和停靠工具栏的区域;false 表示整个显示器。
返回值
以像素为单位的宽度。
3 个示例: else-if 链, 将活动窗口贴靠到其所在显示器的左半边, 将窗口贴靠到光标下方的 3×2 网格单元格中
DisplayMonitorGetRectXFromName
DisplayMonitorGetRectXFromName(name: Text, workArea: Bool) → Integer
返回按已保存的设备路径或型号名称找到的已连接显示器的左边缘,可以是其完整区域的,也可以是其工作区的。
参数
name: Text— 显示器设备路径(可靠的选择)或型号名称,例如 DELL U2720Q。不区分大小写;设备路径完全匹配优先于型号名称。workArea: Bool— true 表示工作区,即不包括任务栏和停靠工具栏的区域;false 表示整个显示器。
返回值
以屏幕像素为单位的左边缘;如果没有已连接的显示器与该名称匹配,则为 0。0 也可能是真实的边缘,因此请先调用 DisplayMonitorExistsByName 进行检查。
DisplayMonitorGetRectXFromPoint
DisplayMonitorGetRectXFromPoint(x: Integer, y: Integer, workArea: Bool) → Integer
返回包含某个屏幕点的显示器的左边缘,可以是其完整区域的,也可以是其工作区的。不在任何显示器上的点使用最近的显示器。
参数
x: Integer— 水平屏幕位置,以像素为单位。y: Integer— 垂直屏幕位置,以像素为单位。workArea: Bool— true 表示工作区,即不包括任务栏和停靠工具栏的区域;false 表示整个显示器。
返回值
以屏幕像素为单位的左边缘;位于主显示器左侧的显示器为负数。
3 个示例: else-if 链, 将活动窗口贴靠到其所在显示器的左半边, 将窗口贴靠到光标下方的 3×2 网格单元格中
DisplayMonitorGetRectYFromName
DisplayMonitorGetRectYFromName(name: Text, workArea: Bool) → Integer
返回按已保存的设备路径或型号名称找到的已连接显示器的上边缘,可以是其完整区域的,也可以是其工作区的。
参数
name: Text— 显示器设备路径(可靠的选择)或型号名称,例如 DELL U2720Q。不区分大小写;设备路径完全匹配优先于型号名称。workArea: Bool— true 表示工作区,即不包括任务栏和停靠工具栏的区域;false 表示整个显示器。
返回值
以屏幕像素为单位的上边缘;如果没有已连接的显示器与该名称匹配,则为 0。0 也可能是真实的边缘,因此请先调用 DisplayMonitorExistsByName 进行检查。
DisplayMonitorGetRectYFromPoint
DisplayMonitorGetRectYFromPoint(x: Integer, y: Integer, workArea: Bool) → Integer
返回包含某个屏幕点的显示器的上边缘,可以是其完整区域的,也可以是其工作区的。不在任何显示器上的点使用最近的显示器。
参数
x: Integer— 水平屏幕位置,以像素为单位。y: Integer— 垂直屏幕位置,以像素为单位。workArea: Bool— true 表示工作区,即不包括任务栏和停靠工具栏的区域;false 表示整个显示器。
返回值
以屏幕像素为单位的上边缘;位于主显示器上方的显示器为负数。
2 个示例: 将活动窗口贴靠到其所在显示器的左半边, 将窗口贴靠到光标下方的 3×2 网格单元格中
Engine
EngineConsumePhysicalInput
EngineConsumePhysicalInput(enable: Bool, timeoutSeconds: Integer) → Bool
阻止用户的真实鼠标和键盘输入到达任何窗口,或结束这种阻止。脚本发送的输入仍然有效,并且阻止会在超时后自行结束。
参数
enable: Bool— true 表示开始或重新开始阻止真实输入;false 表示结束阻止,无论该阻止是由哪个脚本开始的。timeoutSeconds: Integer— 阻止持续的最长时间,以秒为单位;enable 为 true 时须为 1 或更大。更大的值会被缩短为“脚本”设置页上的最大值(默认为 120 秒)。enable 为 false 时忽略。
返回值
始终为 true。当 enable 设为 true 时,如果 timeoutSeconds 为 0 或更小,脚本将因错误而停止。
EngineDisable
EngineDisable() → Bool · 简单
禁用引擎,与从托盘图标禁用相同,直到 EngineEnable 或托盘将其重新启用。更改在调用返回后立即生效。在安全模式下不执行任何操作。
参数
无参数。
返回值
如果已发送请求,则为 true;如果引擎尚未完成启动,则为 false。
1 个示例: 引擎状态
EngineDisableNextGesture
EngineDisableNextGesture() → Bool · 简单
让下一次按下绘制按钮时直接传递给应用程序,而不是开始手势,仅限一次。引擎处于禁用状态时无效。
参数
无参数。
返回值
始终为 true。
1 个示例: 放行下一次右键拖动
EngineEnable
EngineEnable() → Bool · 简单
在 EngineDisable 或从托盘图标禁用之后重新启用引擎。更改在调用返回后立即生效。在安全模式下不执行任何操作。
参数
无参数。
返回值
如果已发送请求,则为 true;如果引擎尚未完成启动,则为 false。
EngineExit
EngineExit() → Bool · 简单
以正常关闭方式关闭引擎,与托盘菜单上的“退出”相同:隐藏到托盘中的窗口会被还原,配置界面会关闭。关闭在调用返回后立即开始。
参数
无参数。
返回值
如果已发送关闭请求,则为 true;如果引擎尚未完成启动,则为 false。
EngineIsDisabled
EngineIsDisabled() → Bool
返回引擎当前是否处于禁用状态,无论是由 EngineDisable 或托盘图标禁用,还是针对具有焦点的应用程序自动禁用。
参数
无参数。
返回值
如果引擎已禁用,则为 true;如果引擎处于活动状态,则为 false。
1 个示例: 引擎状态
EngineIsSafeMode
EngineIsSafeMode() → Bool
返回引擎是否以安全模式启动。在安全模式下,只有从诊断控制台运行的脚本才能运行。
参数
无参数。
返回值
安全模式下为 true;否则为 false。
1 个示例: 引擎状态
EngineReload
EngineReload() → Bool · 简单
从磁盘重新加载配置而无需重新启动,类似于托盘菜单上的“重新加载配置”。最多等待 3 秒。所有其他正在运行的脚本都会停止;此脚本继续运行。
参数
无参数。
返回值
新配置投入使用后为 true;如果无法加载配置或重新加载耗时超过 3 秒,则为 false。
EngineStopAllActions
EngineStopAllActions() → Bool · 简单
要求所有正在运行的操作和脚本停止,包括调用它的那一个。不会强行终止任何内容:每个脚本在其下一步时停止,因此调用方可能会先多运行一小段。
参数
无参数。
返回值
始终为 true。
File
FileAppendText
FileAppendText(path: Text, text: Text) → Bool
将文本添加到文本文件的末尾,如果文件不存在则创建该文件。适合用于日志。文本以 UTF-8 写入,不会自动添加换行符。
参数
path: Text— 文件的完整路径。其所在文件夹必须已存在。text: Text— 要添加的文本。以 '\n' 结尾,可使每个条目各占一行。
返回值
如果已写入文本,则为 true;如果文件夹不存在、文件被锁定或现有文件的开头看起来是二进制数据,则为 false。
1 个示例: 追加到日志文件
FileCopy
FileCopy(source: Text, destination: Text, overwrite: Bool) → Bool
将任意类型的文件复制到新路径。目标文件夹必须已存在。
参数
source: Text— 要复制的文件的完整路径。destination: Text— 新副本的完整路径,包括其文件名。overwrite: Bool— true 表示替换 destination 处的现有文件;false 表示保留该文件不变并返回 false。
返回值
如果已复制文件,则为 true;如果源文件不存在、目标已存在且 overwrite 为 false,或复制失败,则为 false。
1 个示例: 编辑前备份文件
FileCreate
FileCreate(path: Text, text: Text) → Bool
使用给定内容创建一个新的文本文件,以 UTF-8 写入。如果该路径上已存在任何内容,则拒绝执行;若要替换现有文件的内容,请使用 FileEditText。
参数
path: Text— 新文件的完整路径。其所在文件夹必须已存在。text: Text— 文件的内容。空文本会创建一个空文件。
返回值
如果已创建文件,则为 true;如果该位置已存在文件或文件夹,或无法写入文件,则为 false。
2 个示例: 今天的日期,以及带时间戳的文件名, 追加到日志文件
FileDelete
FileDelete(path: Text) → Bool
永久删除文件;文件不会进入回收站。已不存在的文件视为成功。绝不会删除文件夹;删除文件夹请使用 FolderDelete。
参数
path: Text— 要删除的文件的完整路径。
返回值
如果文件已不存在(包括从未存在过的情况),则为 true;如果路径是文件夹,或文件被锁定或访问被拒绝,则为 false。
FileEditText
FileEditText(path: Text, text: Text) → Bool
替换现有文本文件的全部内容,以 UTF-8 写入。拒绝处理看起来是二进制数据的文件。若要创建新文件,请使用 FileCreate。
参数
path: Text— 现有文本文件的完整路径。text: Text— 新内容,将替换文件中的全部内容。
返回值
如果已重写文件,则为 true;如果文件不存在、其开头看起来是二进制数据或无法写入,则为 false。
1 个示例: 编辑前备份文件
FileExists
FileExists(path: Text) → Bool
检查某个路径上是否存在文件。该路径上的文件夹不算在内;对于文件夹,请使用 FolderExists。
参数
path: Text— 要检查的文件的完整路径。
返回值
如果该位置存在文件,则为 true;如果不存在任何内容或它是一个文件夹,则为 false。
FileGetCreationDate
FileGetCreationDate(path: Text) → Text
以 UTC 的 ISO 8601 日期和时间返回文件的创建时间,DateTimeFormat 和其他 DateTime 内置函数可以读取该值。
参数
path: Text— 文件的完整路径。
返回值
创建时间,例如 2026-10-01T18:05:09Z;如果文件不存在或该路径是文件夹,则返回空文本。
FileGetModifiedDate
FileGetModifiedDate(path: Text) → Text
以 UTC 的 ISO 8601 日期和时间返回文件内容的上次更改时间,DateTimeFormat 和其他 DateTime 内置函数可以读取该值。
参数
path: Text— 文件的完整路径。
返回值
上次修改时间,例如 2026-10-01T18:05:09Z;如果文件不存在或该路径是文件夹,则返回空文本。
1 个示例: 读取文件并统计行数
FileGetProductVersion
FileGetProductVersion(path: Text) → Text
返回程序或库文件(例如 .exe 或 .dll)中存储的产品版本。这是随该文件一起发布的产品的版本,可能与 FileGetVersion 不同。
参数
path: Text— .exe、.dll 或其他带有版本信息的文件的完整路径。
返回值
由四个数字组成的版本,例如 10.0.22621.1;如果文件没有版本信息或不存在,则返回空文本。
FileGetSize
FileGetSize(path: Text) → Integer
返回文件的大小(以字节为单位),无需打开或读取文件。
参数
path: Text— 文件的完整路径。
返回值
以字节为单位的大小;如果文件不存在或该路径是文件夹,则为 -1。
1 个示例: 读取文件并统计行数
FileGetVersion
FileGetVersion(path: Text) → Text
返回程序或库文件(例如 .exe 或 .dll)中存储的文件版本,即其“属性”中“详细信息”选项卡上显示的版本。
参数
path: Text— .exe、.dll 或其他带有版本信息的文件的完整路径。
返回值
由四个数字组成的版本,例如 10.0.22621.1;如果文件没有版本信息或不存在,则返回空文本。
FileMove
FileMove(source: Text, destination: Text, overwrite: Bool) → Bool
将任意类型的文件移动到新路径,同时也可以为其指定新名称,包括仅更改字母大小写。目标文件夹必须已存在。
参数
source: Text— 要移动的文件的完整路径。destination: Text— 文件新位置的完整路径,包括其文件名。overwrite: Bool— true 表示一步替换 destination 处的现有文件;false 表示保留该文件不变并返回 false。与源路径仅字母大小写不同的目标不算现有文件。
返回值
如果已移动文件,则为 true;如果源文件不存在、目标已存在且 overwrite 为 false,或移动失败,则为 false。
FileReadText
FileReadText(path: Text) → Text
读取整个文本文件并返回其内容。支持 UTF-8、带字节顺序标记的 UTF-16 以及采用系统旧版代码页的文件。拒绝处理二进制文件。
参数
path: Text— 文本文件的完整路径。
返回值
文件的内容;如果文件不存在、无法读取或看起来是二进制数据,则返回空文本。
FileRename
FileRename(path: Text, newName: Text) → Bool
重命名文件,并将其保留在当前文件夹中。也可以仅更改字母大小写,例如将 report.txt 改为 Report.txt。若要将文件移动到其他文件夹,请使用 FileMove。
参数
path: Text— 要重命名的文件的完整路径。newName: Text— 仅新文件名,例如 report-old.txt。包含正斜杠或反斜杠的名称会使脚本因错误而停止。
返回值
如果已重命名文件,则为 true;如果文件不存在、已存在使用新名称的其他文件或文件夹,或重命名失败,则为 false。
Folder
FolderCreate
FolderCreate(path: Text) → Bool
创建文件夹,包括任何缺失的父文件夹。已存在的文件夹视为成功。
参数
path: Text— 要创建的文件夹的完整路径。
返回值
如果之后该文件夹存在,则为 true;如果有文件挡在路径上或无法创建文件夹,则为 false。
FolderDelete
FolderDelete(path: Text, recursive: Bool) → Bool
永久删除文件夹;文件夹不会进入回收站。当 recursive 设为 true 时,其中的所有内容也会被删除。已不存在的文件夹视为成功。绝不会删除文件;删除文件请使用 FileDelete。
参数
path: Text— 要删除的文件夹的完整路径。recursive: Bool— true 表示删除该文件夹及其中的所有内容;false 表示仅在文件夹为空时才删除。
返回值
如果文件夹已不存在,则为 true;如果路径是文件、文件夹不为空且 recursive 为 false,或其中的某些内容被锁定或受保护,则为 false。
FolderEnumerateAll
FolderEnumerateAll(path: Text, recursive: Bool) → Integer
列出文件夹中的文件和子文件夹,并返回其数量。使用 FolderGetEnumeratedPathAt 读取每个完整路径。无法访问的子文件夹将被跳过。
参数
path: Text— 要列出的文件夹的完整路径。recursive: Bool— true 表示同时列出所有子文件夹中的全部内容;false 表示仅列出该文件夹的直接内容。
返回值
找到的条目数;如果文件夹不存在或无法读取,则为 -1。
1 个示例: 统计文件夹中的文件类型
FolderExists
FolderExists(path: Text) → Bool
检查某个路径上是否存在文件夹。该路径上的文件不算在内;对于文件,请使用 FileExists。
参数
path: Text— 要检查的文件夹的完整路径。
返回值
如果该位置存在文件夹,则为 true;如果不存在任何内容或它是一个文件,则为 false。
FolderGetEnumeratedPathAt
FolderGetEnumeratedPathAt(index: Integer) → Text
从本次脚本运行中最近一次 FolderEnumerateAll 调用生成的列表中返回一个完整路径。
参数
index: Integer— 在列表中的位置,范围为 0 到 FolderEnumerateAll 返回的数量减 1。
返回值
文件或文件夹的完整路径;如果 index 超出范围或尚未调用 FolderEnumerateAll,则返回空文本。
1 个示例: 统计文件夹中的文件类型
FolderRename
FolderRename(path: Text, newName: Text) → Bool
重命名文件夹,并将其连同内容保留在当前的父文件夹中。也可以仅更改字母大小写。
参数
path: Text— 要重命名的文件夹的完整路径。newName: Text— 仅新文件夹名称。包含正斜杠或反斜杠的名称会使脚本因错误而停止。
返回值
如果已重命名文件夹,则为 true;如果文件夹不存在、已存在使用新名称的其他文件或文件夹,或重命名失败(例如因为其中的某个文件处于打开状态),则为 false。
FolderWatchCreate
FolderWatchCreate(name: Text, path: Text, recursive: Bool, filterMask: Integer, script: Text) → Bool
开始监视文件夹,并针对 Windows 报告的每个更改(例如文件的创建、更改、重命名或删除)运行一个脚本。此脚本结束后,监视仍会继续运行。
参数
name: Text— 监视的名称。使用已在使用的名称创建监视会替换该监视。名称区分大小写。path: Text— 要监视的文件夹的完整路径。recursive: Bool— true 表示同时监视所有子文件夹;false 表示仅监视该文件夹本身。filterMask: Integer— 要报告的更改类型:用 | 组合的 FileNotify 常量,例如 FileNotify.FileName | FileNotify.LastWrite。script: Text— 针对每个更改运行的脚本,类型为 Text。它通过 ContextGetWatchAction(created、deleted、modified、renamed-old-name、renamed-new-name 或 overflow)和 ContextGetWatchPath 读取更改。
返回值
如果监视正在运行,则为 true;如果文件夹不存在、无法打开或 filterMask 为 0,则为 false。
1 个示例: 监视文件夹
FolderWatchDelete
FolderWatchDelete(name: Text) → Bool
停止用 FolderWatchCreate 创建的文件夹监视,使其脚本不再运行。
参数
name: Text— 传给 FolderWatchCreate 的名称。名称区分大小写。
返回值
如果找到并停止了具有该名称的监视,则为 true;如果没有这样的监视,则为 false。
1 个示例: 监视文件夹
FolderWatchDeleteAll
FolderWatchDeleteAll() → Bool
停止用 FolderWatchCreate 创建的所有文件夹监视,使它们的脚本都不再运行。
参数
无参数。
返回值
始终为 true。
FolderWatchGetCount
FolderWatchGetCount() → Integer
返回正在运行的文件夹监视的数量,并为 FolderWatchGetEnumeratedNameAt 创建其名称的快照。
参数
无参数。
返回值
正在运行的文件夹监视的数量;如果没有,则为 0。
FolderWatchGetEnumeratedNameAt
FolderWatchGetEnumeratedNameAt(index: Integer) → Text
从本次脚本运行中最近一次 FolderWatchGetCount 调用创建的快照中返回一个监视名称。
参数
index: Integer— 在快照中的位置,范围为 0 到数量减 1。顺序没有意义。
返回值
监视名称;如果 index 超出范围或尚未调用 FolderWatchGetCount,则返回空文本。
GestureProfile
GestureProfileEnumerateAll
GestureProfileEnumerateAll() → Integer
获取配置中所有手势配置方案的列表,并返回其数量。使用 GestureProfileGetEnumeratedIdAt 和 GestureProfileGetEnumeratedNameAt 逐个读取。
参数
无参数。
返回值
手势配置方案的数量;如果没有,则为 0。
1 个示例: 切换到下一个手势配置方案
GestureProfileGetActiveId
GestureProfileGetActiveId() → Text
返回当前处于活动状态的手势配置方案的 ID。
参数
无参数。
返回值
活动配置方案的 ID;如果没有活动的配置方案,则返回空文本。
2 个示例: Windows 通知, 切换到下一个手势配置方案
GestureProfileGetEnumeratedIdAt
GestureProfileGetEnumeratedIdAt(index: Integer) → Text
从本脚本中 GestureProfileEnumerateAll 最近一次获取的列表中返回一个配置方案的 ID。可将该 ID 传给 GestureProfileSwitch。
参数
index: Integer— 在列表中从 0 开始的位置,范围为 0 到数量减 1。
返回值
配置方案的 ID;如果 index 超出范围或尚未调用 GestureProfileEnumerateAll,则返回空文本。
1 个示例: 切换到下一个手势配置方案
GestureProfileGetEnumeratedNameAt
GestureProfileGetEnumeratedNameAt(index: Integer) → Text
从本脚本中 GestureProfileEnumerateAll 最近一次获取的列表中返回一个配置方案的显示名称。
参数
index: Integer— 在列表中从 0 开始的位置,范围为 0 到数量减 1。
返回值
配置方案的名称;如果 index 超出范围或尚未调用 GestureProfileEnumerateAll,则返回空文本。
1 个示例: 切换到下一个手势配置方案
GestureProfileSwitch
GestureProfileSwitch(profileId: Text) → Bool · 简单
切换到另一个手势配置方案,与从托盘菜单中选择它相同,并且重新启动后仍会记住该选择。切换在调用返回后立即进行。
参数
profileId: Text— 要切换到的配置方案的 ID,例如从 GestureProfileGetEnumeratedIdAt 获取的 ID;空文本表示不使用配置方案。
返回值
如果已发送请求,则为 true;如果没有配置文件使用该 ID,则为 false,且不会有任何更改。切换在调用返回后立即发生;请使用 GestureProfileGetActiveId 确认切换结果。
1 个示例: 切换到下一个手势配置方案
Keyboard
KeyboardGetKeyState
KeyboardGetKeyState(key: Integer) → Integer
返回某个键此刻的原始 Windows 状态。当其他桌面(例如 UAC 提示或锁屏界面)位于前台时,所有键都读作未按下。若只需要“是”或“否”,请使用 KeyboardIsKeyDown 或 KeyboardIsKeyToggled。
参数
key: Integer— 一个 VirtualKey 常量,例如 VirtualKey.CapsLock,或 0 到 255 之间的虚拟键码。任何其他值都会使脚本因错误而停止。
返回值
一个原始 Integer:键按下时为负数(最高位已设置);Caps Lock 等锁定键打开时为奇数(最低位已设置)。
1 个示例: 按键状态位
KeyboardGetKeyStateAsync
KeyboardGetKeyStateAsync(key: Integer) → Integer
返回某个键在此时此刻的原始 Windows 状态,无论哪个窗口具有焦点。
参数
key: Integer— 一个 VirtualKey 常量,例如 VirtualKey.ShiftKey,或 0 到 255 之间的虚拟键码。任何其他值都会使脚本因错误而停止。
返回值
一个原始 Integer:键当前处于按下状态时为负数(最高位已设置)。如果自上次检查以来该键被按下过,则最低位可能被设置,但 Windows 不保证这一点。
KeyboardIsKeyDown
KeyboardIsKeyDown(key: Integer) → Bool
检查某个键此刻是否处于按住状态。当其他桌面(例如 UAC 提示或锁屏界面)位于前台时,所有键都读作未按下。
参数
key: Integer— 一个 VirtualKey 常量,例如 VirtualKey.ControlKey,或 0 到 255 之间的虚拟键码。任何其他值都会使脚本因错误而停止。
返回值
如果键处于按下状态,则为 true;如果处于弹起状态,则为 false。
2 个示例: 按键状态位, 按住 Ctrl 时改变行为
KeyboardIsKeyToggled
KeyboardIsKeyToggled(key: Integer) → Bool
检查某个锁定键是否已打开。仅对 VirtualKey.CapsLock、VirtualKey.NumLock 和 VirtualKey.Scroll 有意义。
参数
key: Integer— 一个 VirtualKey 常量,例如 VirtualKey.CapsLock,或 0 到 255 之间的虚拟键码。任何其他值都会使脚本因错误而停止。
返回值
如果锁定键已打开,则为 true;如果已关闭,则为 false。
1 个示例: 按键状态位
KeyboardKeyDown
KeyboardKeyDown(key: Integer) → Bool
按下一个键并保持按下状态,直到 KeyboardKeyUp 将其释放。当“将媒体键和浏览器键作为命令发送”设置打开时,媒体键、音量键或浏览器键会改为发送其命令。
参数
key: Integer— 一个 VirtualKey 常量,例如 VirtualKey.ShiftKey,或 0 到 255 之间的虚拟键码。任何其他值都会使脚本因错误而停止。
返回值
如果已发送按键,则为 true;如果 Windows 阻止了按键,或者对于作为命令发送的键而言没有窗口具有焦点,则为 false。
1 个示例: Shift+单击
KeyboardKeyUp
KeyboardKeyUp(key: Integer) → Bool
释放用 KeyboardKeyDown 按下的键。对于作为命令发送的媒体键、音量键或浏览器键,它不执行任何操作,因为命令在按下时就已发出。
参数
key: Integer— 一个 VirtualKey 常量,例如 VirtualKey.ShiftKey,或 0 到 255 之间的虚拟键码。任何其他值都会使脚本因错误而停止。
返回值
如果已发送释放键的操作,则为 true,对于作为命令发送的键始终为 true;如果 Windows 阻止了该操作,则为 false。
1 个示例: Shift+单击
KeyboardPressKey
KeyboardPressKey(key: Integer) → Bool · 简单
按下并释放一个键,可以是 Windows 为其定义了键码的任何键,包括媒体键。当“将媒体键和浏览器键作为命令发送”设置打开时,这些键会改为发送其命令。
参数
key: Integer— 一个 VirtualKey 常量,例如 VirtualKey.MediaPlayPause,或 0 到 255 之间的虚拟键码。任何其他值都会使脚本因错误而停止。
返回值
如果已发送按键,则为 true;如果 Windows 阻止了按键,或者对于作为命令发送的键而言没有窗口具有焦点,则为 false。
3 个示例: 命名常量与原始数字, 媒体键, 将串口设备的按钮映射到媒体键
KeyboardPressKeyCombo
KeyboardPressKeyCombo(combo: Text) → Bool · 简单
按下一个组合键,例如 Ctrl+C:按住修饰键,按下并释放该键,然后释放修饰键。每次调用发送一个组合键。
参数
combo: Text— 可选的修饰符号(^ 表示 Ctrl,+ 表示 Shift,@ 表示 Windows,百分号表示 Alt),后跟一个字母或数字,或者后跟用大括号括起的键名,例如 {ENTER}、{F5} 或 {LEFT},字母大小写不限。示例:'^c' 即 Ctrl+C。
返回值
如果已发送击键,则为 true;如果 Windows 阻止了击键,则为 false。无法识别的 combo 会使脚本因错误而停止。
4 个示例: 组合键, 键入签名, 将所选文本转为大写, 在网上搜索所选内容
KeyboardTypeText
KeyboardTypeText(text: Text) → Bool · 简单
逐个字符地将文本键入到具有焦点的窗口中,支持任何语言(包括表情符号),与键盘布局无关。在每个字符之前等待“键入延迟”设置所指定的时间。
参数
text: Text— 要键入的文本。每个换行符作为一次 Enter 按键发送。在文本扩展的脚本中,结束触发的那个键会在文本之后键入。
返回值
如果已发送每个字符或文本为空,则为 true;如果 Windows 阻止了其中某些字符,则为 false。
3 个示例: 启动程序、等待其窗口出现并对其操作, 今天的日期,以及带时间戳的文件名, 键入签名
Macro
MacroClearTemporary
MacroClearTemporary() → Bool
丢弃用 MacroRecordTemporary 录制的宏。
参数
无参数。
返回值
如果有已录制的宏可丢弃,则为 true;如果没有,则为 false。
MacroExpectFocusedWindow
MacroExpectFocusedWindow(exeName: Text, windowClass: Text) → Bool
等待前台窗口属于给定的程序和窗口类,最长等待设置中的回放窗口等待时间(默认为 2 秒)。如果始终不匹配,则显示通知并停止脚本。
参数
exeName: Text— 程序的文件名,例如 notepad.exe。不区分大小写;空文本匹配任何程序。windowClass: Text— 顶级窗口的类名,例如 Notepad。不区分大小写;空文本匹配任何类。
返回值
窗口匹配时为 true;如果在等待期间要求脚本停止,则为 false。
MacroExpectWindowAt
MacroExpectWindowAt(x: Integer, y: Integer, exeName: Text, windowClass: Text) → Bool
等待某个屏幕点处的顶级窗口属于给定的程序和窗口类,最长等待设置中的回放窗口等待时间(默认为 2 秒)。如果始终不匹配,则显示通知并停止脚本。
参数
x: Integer— 要检查的水平屏幕位置,以虚拟屏幕像素为单位。y: Integer— 要检查的垂直屏幕位置,以虚拟屏幕像素为单位。exeName: Text— 程序的文件名,例如 notepad.exe。不区分大小写;空文本匹配任何程序。windowClass: Text— 顶级窗口的类名,例如 Notepad。不区分大小写;空文本匹配任何类。
返回值
窗口匹配时为 true;如果在等待期间要求脚本停止,则为 false。
MacroGetTemporaryScript
MacroGetTemporaryScript() → Text
以步骤脚本文本的形式返回用 MacroRecordTemporary 录制的宏,以便脚本可以保存或检查它。
参数
无参数。
返回值
最近一次完成的录制的步骤文本;如果尚未录制任何内容或已将其清除,则返回空文本。在新的录制进行期间,仍返回上一次的录制。
MacroPlayTemporary
MacroPlayTemporary(timeoutSeconds: Integer) → Bool
回放用 MacroRecordTemporary 录制的宏,并等待其完成或超时。回放期间会暂缓用户的真实鼠标和键盘输入。
参数
timeoutSeconds: Integer— 最长等待时间,以秒为单位;必须为 1 或更大,否则脚本将因错误而停止。超过此时间后仍在运行的宏会继续运行,但不再暂缓真实输入。
返回值
如果宏在规定时间内播放完毕,则为 true;如果未录制任何内容、某个步骤或窗口检查失败、回放被停止,或超时时仍在运行,则为 false。
MacroRecordTemporary
MacroRecordTemporary() → Bool
开始将鼠标和键盘输入录制到保存在内存中的临时宏;按 Ctrl+Break 可停止。在录制开始之前即立即返回。可能会先出现一个确认框。
参数
无参数。
返回值
如果已发送录制请求,则为 true;如果已有录制正在运行、正在启动或已被请求,或者引擎尚未完成启动,则为 false。
Math
MathAbs
MathAbs(value: Any) → Any
返回数字的绝对值,即去掉负号后的数字。适用于 Integer 和 Real 值。
参数
value: Any— Integer 或 Real 数字。
返回值
绝对值,类型与 value 相同(Integer 或 Real);如果 Real 为 NaN 或无穷大,则为 0.0。不是数字的值会使操作因错误而停止。
MathAtan2
MathAtan2(y: Any, x: Any) → Real
返回从原点到点 (x, y) 的角度,以弧度为单位。屏幕 y 坐标向下增大,因此若要按通常的数学方向求笔画角度,请传入取反后的垂直变化量。
参数
y: Any— 该点的垂直坐标。Integer 或 Real。注意 y 在前。x: Any— 该点的水平坐标。Integer 或 Real。
返回值
以弧度为单位的角度,范围为 -pi 到 pi,类型为 Real;如果任一参数为 NaN 或无穷大,则为 0.0。不是数字的参数会使操作因错误而停止。
MathCeil
MathCeil(value: Real) → Integer
将数字向上舍入为最接近的整数。MathCeil(2.1) 为 3;MathCeil(-2.1) 为 -2。
参数
value: Real— 要向上舍入的数字。Integer 按原样接受。
返回值
舍入后的值,类型为 Integer。如果 value 为 NaN 或无穷大,则为 0;超出 Integer 范围的值会得到最大或最小的 Integer。
1 个示例: 舍入和 Real 数学内置函数
MathClamp
MathClamp(value: Any, min: Any, max: Any) → Any
将数字限制在某个范围内:如果 value 小于 min,则返回 min;如果 value 大于 max,则返回 max;否则返回 value。适用于 Integer 和 Real 值。
参数
value: Any— 要限制在范围内的数字。min: Any— 允许的最小值。不得大于 max。max: Any— 允许的最大值。
返回值
value、min 或 max 中被选中的那一个,保留其自身类型(Integer 或 Real);如果任一参数为 NaN 或无穷大,则为 0.0。非数字或 min 大于 max 会使操作因错误而停止。
1 个示例: 将值限制在范围内
MathCos
MathCos(radians: Real) → Real
返回以弧度给出的角度的余弦值。若要转换角度值,请乘以 MathGetPi() 再除以 180。
参数
radians: Real— 以弧度为单位的角度。Integer 按原样接受。
返回值
余弦值,范围为 -1 到 1,类型为 Real;如果 radians 为 NaN 或无穷大,则为 0.0。
1 个示例: 让鼠标沿圆周移动
MathFloor
MathFloor(value: Real) → Integer
将数字向下舍入为最接近的整数。MathFloor(2.9) 为 2;MathFloor(-2.1) 为 -3。
参数
value: Real— 要向下舍入的数字。Integer 按原样接受。
返回值
舍入后的值,类型为 Integer。如果 value 为 NaN 或无穷大,则为 0;超出 Integer 范围的值会得到最大或最小的 Integer。
1 个示例: 舍入和 Real 数学内置函数
MathGetE
MathGetE() → Real
返回数学常数 e(约为 2.71828),即自然对数的底数。
参数
无参数。
返回值
e 的值,类型为 Real。
MathGetPi
MathGetPi() → Real
返回数学常数 pi(约为 3.14159)。可用于在角度和弧度之间进行转换。
参数
无参数。
返回值
pi 的值,类型为 Real。
1 个示例: 让鼠标沿圆周移动
MathLog
MathLog(value: Real) → Real
返回数字的自然对数(以 e 为底)。除以 MathLog(10.0) 可得到以 10 为底的对数。
参数
value: Real— 大于 0 的数字。Integer 按原样接受。
返回值
自然对数,类型为 Real;如果 value 为 0、负数、NaN 或无穷大,则为 0。
MathMax
MathMax(a: Any, b: Any) → Any
返回两个数字中较大的一个。适用于 Integer 和 Real 值。
参数
a: Any— 第一个数字。b: Any— 第二个数字。
返回值
a 和 b 中较大的一个,保留其自身类型;如果两者相等,则为 a;如果任一参数为 NaN 或无穷大,则为 0.0。不是数字的参数会使操作因错误而停止。
MathMin
MathMin(a: Any, b: Any) → Any
返回两个数字中较小的一个。适用于 Integer 和 Real 值。
参数
a: Any— 第一个数字。b: Any— 第二个数字。
返回值
a 和 b 中较小的一个,保留其自身类型;如果两者相等,则为 a;如果任一参数为 NaN 或无穷大,则为 0.0。不是数字的参数会使操作因错误而停止。
1 个示例: 调高音量并显示屏幕提示
MathMod
MathMod(value: Any, divisor: Any) → Any
返回 value 除以 divisor 的余数。结果的符号与除数相同,因此 MathMod(-30, 360) 为 330,适合用于角度回绕或循环索引。
参数
value: Any— 被除数。Integer 或 Real。divisor: Any— 除数。Integer 或 Real。
返回值
余数:两个参数均为 Integer 时为 Integer,否则为 Real。如果 divisor 为 0,或任一参数为 NaN 或无穷大,则为 0。不是数字的参数会使操作因错误而停止。
MathPow
MathPow(base: Real, exponent: Real) → Real
求数字的幂,例如平方或立方。MathPow(2.0, 10.0) 为 1024。
参数
base: Real— 底数。Integer 按原样接受。exponent: Real— 指数。可以为负数或小数;0.5 表示求平方根。
返回值
结果,类型为 Real;如果某个参数为 NaN 或无穷大,或没有有限的结果(例如 0 的负数次幂,或结果太大而无法容纳),则为 0。
MathRandom
MathRandom(min: Integer, max: Integer) → Integer
返回一个介于 min 和 max 之间(含两端)的随机整数。MathRandom(1, 6) 相当于掷一次骰子。
参数
min: Integer— 可能的最小结果。max: Integer— 可能的最大结果。不得小于 min。
返回值
一个从 min 到 max 的随机 Integer。min 大于 max 会使操作因错误而停止。
2 个示例: 带退出标志的 while (true), 随机数和抛硬币
MathRound
MathRound(value: Real) → Integer
将数字舍入为最接近的整数。0.5 按远离零的方向舍入:2.5 变为 3,-2.5 变为 -3。
参数
value: Real— 要舍入的数字。若要以整数形式保留两位小数,请对 value 乘以 100 的结果进行舍入。
返回值
舍入后的值,类型为 Integer。如果 value 为 NaN 或无穷大,则为 0;超出 Integer 范围的值会得到最大或最小的 Integer。
5 个示例: 舍入和 Real 数学内置函数, 手势笔画的长度, 让鼠标沿圆周移动, 格式化 Real 而不显示六位小数, 调高音量并显示屏幕提示
MathSin
MathSin(radians: Real) → Real
返回以弧度给出的角度的正弦值。若要转换角度值,请乘以 MathGetPi() 再除以 180。
参数
radians: Real— 以弧度为单位的角度。Integer 按原样接受。
返回值
正弦值,范围为 -1 到 1,类型为 Real;如果 radians 为 NaN 或无穷大,则为 0.0。
1 个示例: 让鼠标沿圆周移动
MathSqrt
MathSqrt(value: Real) → Real
返回数字的平方根。MathSqrt(dx * dx + dy * dy) 即两点之间的距离。
参数
value: Real— 大于或等于 0 的数字。Integer 按原样接受。
返回值
平方根,类型为 Real;如果 value 为负数、NaN 或无穷大,则为 0。
2 个示例: 舍入和 Real 数学内置函数, 手势笔画的长度
MathTan
MathTan(radians: Real) → Real
返回以弧度给出的角度的正切值。在接近直角时结果会变得非常大。
参数
radians: Real— 以弧度为单位的角度。Integer 按原样接受。
返回值
正切值,类型为 Real;如果 radians 为 NaN 或无穷大,则为 0.0。
Mouse
MouseButtonDown
MouseButtonDown(button: Integer) → Bool
在当前光标位置按下鼠标按钮并保持按下状态,直到调用 MouseButtonUp。与 MouseMoveTo 结合使用可编写拖动操作的脚本。
参数
button: Integer— 一个 MouseButton 常量,例如 MouseButton.Primary。Primary 和 Secondary 遵循 Windows 中的切换主次按钮设置;Left 和 Right 是物理按钮。
返回值
如果已发送按下按钮的操作,则为 true;如果 Windows 阻止了该操作,则为 false。未知的按钮会使脚本因错误而停止。
1 个示例: 脚本化拖动
MouseButtonUp
MouseButtonUp(button: Integer) → Bool
在当前光标位置释放鼠标按钮,通常是用 MouseButtonDown 按下的按钮。
参数
button: Integer— 一个 MouseButton 常量,例如 MouseButton.Primary。Primary 和 Secondary 遵循 Windows 中的切换主次按钮设置;Left 和 Right 是物理按钮。
返回值
如果已发送释放按钮的操作,则为 true;如果 Windows 阻止了该操作,则为 false。未知的按钮会使脚本因错误而停止。
1 个示例: 脚本化拖动
MouseClick
MouseClick(x: Integer, y: Integer, button: Integer) → Bool · 简单
将光标移动到某个屏幕点并在该处单击鼠标按钮。之后光标停留在该点。
参数
x: Integer— 要单击的水平屏幕位置,以像素为单位。y: Integer— 要单击的垂直屏幕位置,以像素为单位。button: Integer— 一个 MouseButton 常量,例如 MouseButton.Primary。Primary 和 Secondary 遵循 Windows 中的切换主次按钮设置;Left 和 Right 是物理按钮。
返回值
如果已发送单击,则为 true;如果无法将光标移动到该点(此时不会单击任何内容),或 Windows 阻止了单击,则为 false。未知的按钮会使脚本因错误而停止。
2 个示例: 点击某处,然后将光标放回原处, Shift+单击
MouseClickAtClientPoint
MouseClickAtClientPoint(window: Window, x: Integer, y: Integer, button: Integer) → Bool
在相对于窗口工作区(即不含标题栏和边框的内部区域)左上角测量的某个点处单击鼠标按钮。光标会移动到该处并停留。
参数
window: Window— 其工作区作为 x 和 y 测量起点的窗口。x: Integer— 到工作区左边缘的距离,以该窗口自身的像素为单位;对于 Windows 按 DPI 缩放的窗口,这可能与屏幕像素不同。y: Integer— 到工作区上边缘的距离,以该窗口自身的像素为单位;对于 Windows 按 DPI 缩放的窗口,这可能与屏幕像素不同。button: Integer— 一个 MouseButton 常量,例如 MouseButton.Primary。Primary 和 Secondary 遵循 Windows 中的切换主次按钮设置;Left 和 Right 是物理按钮。
返回值
如果已发送单击,则为 true;如果窗口无效或已不存在、无法将光标移动到该点(此时不会单击任何内容),或 Windows 阻止了单击,则为 false。未知的按钮会使脚本因错误而停止。
1 个示例: 点击窗口内的某个点
MouseDoubleClick
MouseDoubleClick(x: Integer, y: Integer, button: Integer) → Bool · 简单
将光标移动到某个屏幕点并在该处双击鼠标按钮。之后光标停留在该点。
参数
x: Integer— 要双击的水平屏幕位置,以像素为单位。y: Integer— 要双击的垂直屏幕位置,以像素为单位。button: Integer— 一个 MouseButton 常量,例如 MouseButton.Primary。Primary 和 Secondary 遵循 Windows 中的切换主次按钮设置;Left 和 Right 是物理按钮。
返回值
如果两次单击都已发送,则为 true;如果无法将光标移动到该点(此时不会单击任何内容),或 Windows 阻止了单击,则为 false。未知的按钮会使脚本因错误而停止。
MouseGetCursorX
MouseGetCursorX() → Integer
返回鼠标光标的水平屏幕位置。
参数
无参数。
返回值
光标的 x 位置,以屏幕像素为单位;在位于主显示器左侧的显示器上为负数。
8 个示例: else-if 链, 让鼠标沿圆周移动, 读取光标下的像素颜色, 将窗口贴靠到光标下方的 3×2 网格单元格中, 描述光标下方的内容, 点击某处,然后将光标放回原处, 脚本化拖动, Shift+单击
MouseGetCursorY
MouseGetCursorY() → Integer
返回鼠标光标的垂直屏幕位置。
参数
无参数。
返回值
光标的 y 位置,以屏幕像素为单位;在位于主显示器上方的显示器上为负数。
8 个示例: else-if 链, 让鼠标沿圆周移动, 读取光标下的像素颜色, 将窗口贴靠到光标下方的 3×2 网格单元格中, 描述光标下方的内容, 点击某处,然后将光标放回原处, 脚本化拖动, Shift+单击
MouseIsButtonDown
MouseIsButtonDown(button: Integer) → Bool
检查此刻某个鼠标按钮是否处于按住状态。
参数
button: Integer— 一个 MouseButton 常量,例如 MouseButton.Primary。Primary 和 Secondary 遵循 Windows 中的切换主次按钮设置;Left 和 Right 是物理按钮。
返回值
如果按钮处于按下状态,则为 true;如果处于弹起状态,则为 false。未知的按钮会使脚本因错误而停止。
MouseLockToRect
MouseLockToRect(x: Integer, y: Integer, width: Integer, height: Integer) → Bool
将鼠标光标限制在一个屏幕矩形内。该锁定在脚本结束后仍然有效,直到调用 MouseUnlock 或其他程序更改它为止,因此完成后务必解除锁定。
参数
x: Integer— 矩形的左边缘,以屏幕像素为单位。y: Integer— 矩形的上边缘,以屏幕像素为单位。width: Integer— 矩形的宽度,以像素为单位。必须大于 0。height: Integer— 矩形的高度,以像素为单位。必须大于 0。
返回值
如果光标现已被限制,则为 true;如果 width 或 height 不是正数或 Windows 拒绝了请求,则为 false。
1 个示例: 将光标限制在窗口内 5 秒
MouseMoveTo
MouseMoveTo(x: Integer, y: Integer) → Bool · 简单
将鼠标光标移动到任意显示器上的某个屏幕点,如同用户移动了鼠标。
参数
x: Integer— 水平屏幕位置,以像素为单位。y: Integer— 垂直屏幕位置,以像素为单位。
返回值
如果已发送移动,则为 true;如果 Windows 阻止了移动,则为 false。
3 个示例: 让鼠标沿圆周移动, 点击某处,然后将光标放回原处, 脚本化拖动
MouseScrollHorizontal
MouseScrollHorizontal(amount: Integer) → Bool · 简单
在当前光标位置转动水平鼠标滚轮。若要在其他位置滚动,请先使用 MouseMoveTo。
参数
amount: Integer— 滚轮距离,120 为一格:正数向右滚动,负数向左滚动。在支持的应用中,较小的值可实现更精细的滚动。
返回值
如果已发送滚动,则为 true;如果 Windows 阻止了滚动,则为 false。
1 个示例: 按刻度滚动
MouseScrollVertical
MouseScrollVertical(amount: Integer) → Bool · 简单
在当前光标位置转动垂直鼠标滚轮。若要在其他位置滚动,请先使用 MouseMoveTo。
参数
amount: Integer— 滚轮距离,120 为一格:正数向上滚动,负数向下滚动。在支持的应用中,较小的值可实现更精细的滚动。
返回值
如果已发送滚动,则为 true;如果 Windows 阻止了滚动,则为 false。
1 个示例: 按刻度滚动
MouseUnlock
MouseUnlock() → Bool
解除对鼠标光标的任何限制,无论该限制是由 MouseLockToRect 还是由其他程序设置的。
参数
无参数。
返回值
如果光标已不受限制,则为 true;如果 Windows 拒绝了请求,则为 false。
1 个示例: 将光标限制在窗口内 5 秒
Multimedia
MultimediaGetMute
MultimediaGetMute(endpoint: Integer) → Bool
报告由 endpoint 选择的默认播放设备或麦克风在 Windows 中是否已静音。
参数
endpoint: Integer— 要检查的设备:AudioEndpoint.Playback(默认扬声器或耳机)、AudioEndpoint.Capture(默认麦克风)或 AudioEndpoint.Communications(Windows 用于通话的麦克风)。任何其他值都会使操作因错误而停止。
返回值
如果设备已静音,则为 true;如果未静音或设备不存在(例如未连接麦克风),则为 false。
1 个示例: 切换麦克风静音
MultimediaGetVolume
MultimediaGetVolume(endpoint: Integer) → Real
以 0.0 到 1.0 之间的 Real 值返回由 endpoint 选择的默认播放设备或麦克风的主音量。
参数
endpoint: Integer— 要读取的设备:AudioEndpoint.Playback(默认扬声器或耳机)、AudioEndpoint.Capture(默认麦克风)或 AudioEndpoint.Communications(Windows 用于通话的麦克风)。任何其他值都会使操作因错误而停止。
返回值
音量,范围为 0.0(静音)到 1.0(最大),与 MultimediaSetVolume 的刻度相同;如果设备不存在,则为 0.0。
1 个示例: 调高音量并显示屏幕提示
MultimediaPlayMp3File
MultimediaPlayMp3File(path: Text) → Bool · 简单
开始播放 MP3 文件,并在播放期间立即返回。开始播放另一个 MP3 会停止仍在播放的那一个。
参数
path: Text— .mp3 文件的完整路径,例如 C:/Music/done.mp3。
返回值
如果已开始播放,则为 true;如果文件不存在、Windows 无法在 10 秒内打开或播放它,或“全部停止”结束了等待,则为 false。
MultimediaPlayWavFile
MultimediaPlayWavFile(path: Text) → Bool · 简单
开始播放 .wav 声音文件,并在播放期间立即返回。开始播放另一个 WAV 会停止仍在播放的那一个。仅支持 .wav 文件;对于 MP3,请使用 MultimediaPlayMp3File。
参数
path: Text— .wav 文件的完整路径,例如 C:/Windows/Media/chimes.wav。
返回值
如果文件存在且已开始播放,则为 true;如果该路径上没有文件,则为 false。文件存在但不是可播放的 WAV 时,返回 true 且不播放任何内容。
1 个示例: 播放声音
MultimediaSetMute
MultimediaSetMute(endpoint: Integer, muted: Bool) → Bool · 简单
将由 endpoint 选择的默认播放设备或麦克风静音或取消静音,效果与 Windows 音量静音按钮相同。
参数
endpoint: Integer— 要更改的设备:AudioEndpoint.Playback(默认扬声器或耳机)、AudioEndpoint.Capture(默认麦克风)或 AudioEndpoint.Communications(Windows 用于通话的麦克风)。任何其他值都会使操作因错误而停止。muted: Bool— true 表示将设备静音;false 表示取消静音。
返回值
如果已设置静音状态,则为 true;如果设备不存在或拒绝了更改,则为 false。
1 个示例: 在多次运行之间保持的开关
MultimediaSetVolume
MultimediaSetVolume(endpoint: Integer, level: Real) → Bool · 简单
将由 endpoint 选择的默认播放设备或麦克风的主音量设置为一个精确的级别。
参数
endpoint: Integer— 要更改的设备:AudioEndpoint.Playback(默认扬声器或耳机)、AudioEndpoint.Capture(默认麦克风)或 AudioEndpoint.Communications(Windows 用于通话的麦克风)。任何其他值都会使操作因错误而停止。level: Real— 新音量,范围为 0.0(静音)到 1.0(最大);0.5 相当于 Windows 音量滑块上的 50。超出 0.0 到 1.0 的值会被限制在该范围内。
返回值
如果已设置音量,则为 true;如果设备不存在或拒绝了更改,则为 false。
2 个示例: 调高音量并显示屏幕提示, 将 Arduino 旋钮变成音量控制
MultimediaToggleMute
MultimediaToggleMute(endpoint: Integer) → Bool · 简单
如果由 endpoint 选择的默认播放设备或麦克风未静音,则将其静音;如果已静音,则取消静音。之后可调用 MultimediaGetMute 获取新状态。
参数
endpoint: Integer— 要切换的设备:AudioEndpoint.Playback(默认扬声器或耳机)、AudioEndpoint.Capture(默认麦克风)或 AudioEndpoint.Communications(Windows 用于通话的麦克风)。任何其他值都会使操作因错误而停止。
返回值
如果已切换静音状态,则为 true;如果设备不存在或拒绝了更改,则为 false。这不是新的静音状态。
1 个示例: 切换麦克风静音
Plugin
PluginSendMessage
PluginSendMessage(pluginName: Text, message: Text, timeoutSeconds: Integer) → Text
向一个接受命令的正在运行的插件发送文本消息,并等待其回复。插件一次处理一条消息;在其忙碌时发送的消息会在队列中等待。
参数
pluginName: Text— 插件的显示名称,须完全匹配,包括大小写。message: Text— 要发送的文本。其含义由插件决定。timeoutSeconds: Integer— 等待回复的时间,以秒为单位,范围为 0 到 10;任何其他值都会使脚本因错误而停止。为 0 时,调用会立即返回空文本。
返回值
插件的回复;如果插件未及时回复,则返回空文本。没有这样的正在运行的插件、队列已满或消息过长,都会使脚本因错误而停止。
1 个示例: 与插件通信
Region
RegionGetCellIndexAt
RegionGetCellIndexAt(rectX: Integer, rectY: Integer, rectWidth: Integer, rectHeight: Integer, columns: Integer, rows: Integer, pointX: Integer, pointY: Integer) → Integer
将矩形按列和行拆分为网格,并返回包含某个点的单元格。单元格从 0 开始编号,从左到右,再从上到下。
参数
rectX: Integer— 要拆分的矩形的左边缘,以像素为单位。rectY: Integer— 要拆分的矩形的上边缘,以像素为单位。rectWidth: Integer— 矩形的宽度,以像素为单位。必须大于 0。rectHeight: Integer— 矩形的高度,以像素为单位。必须大于 0。columns: Integer— 网格中的列数。必须大于 0。剩余的像素依次分给前面的列,每列一个。rows: Integer— 网格中的行数。必须大于 0。剩余的像素依次分给前面的行,每行一个。pointX: Integer— 要查找的点的水平位置,所用像素单位与 rectX 相同。pointY: Integer— 要查找的点的垂直位置,所用像素单位与 rectY 相同。
返回值
单元格编号(行号乘以列数,再加上列号);如果该点位于矩形之外,或 rectWidth、rectHeight、columns 或 rows 不是正数,则为 -1。
1 个示例: 将窗口贴靠到光标下方的 3×2 网格单元格中
RegionGetHeight
RegionGetHeight(rectX: Integer, rectY: Integer, rectWidth: Integer, rectHeight: Integer, columns: Integer, rows: Integer, index: Integer) → Integer
返回将矩形按列和行拆分为网格后某个单元格的高度。剩余的像素依次分给前面的行,每行一个。
参数
rectX: Integer— 要拆分的矩形的左边缘,以像素为单位。rectY: Integer— 要拆分的矩形的上边缘,以像素为单位。rectWidth: Integer— 矩形的宽度,以像素为单位。必须大于 0。rectHeight: Integer— 矩形的高度,以像素为单位。必须大于 0。columns: Integer— 网格中的列数。必须大于 0。rows: Integer— 网格中的行数。必须大于 0。index: Integer— 从 0 开始的单元格编号,从左到右、再从上到下计数,范围为 0 到列数乘以行数减 1。
返回值
单元格的高度,以像素为单位;如果 index 超出范围,或 rectWidth、rectHeight、columns 或 rows 不是正数,则为 -1。
1 个示例: 将窗口贴靠到光标下方的 3×2 网格单元格中
RegionGetWidth
RegionGetWidth(rectX: Integer, rectY: Integer, rectWidth: Integer, rectHeight: Integer, columns: Integer, rows: Integer, index: Integer) → Integer
返回将矩形按列和行拆分为网格后某个单元格的宽度。剩余的像素依次分给前面的列,每列一个。
参数
rectX: Integer— 要拆分的矩形的左边缘,以像素为单位。rectY: Integer— 要拆分的矩形的上边缘,以像素为单位。rectWidth: Integer— 矩形的宽度,以像素为单位。必须大于 0。rectHeight: Integer— 矩形的高度,以像素为单位。必须大于 0。columns: Integer— 网格中的列数。必须大于 0。rows: Integer— 网格中的行数。必须大于 0。index: Integer— 从 0 开始的单元格编号,从左到右、再从上到下计数,范围为 0 到列数乘以行数减 1。
返回值
单元格的宽度,以像素为单位;如果 index 超出范围,或 rectWidth、rectHeight、columns 或 rows 不是正数,则为 -1。
1 个示例: 将窗口贴靠到光标下方的 3×2 网格单元格中
RegionGetX
RegionGetX(rectX: Integer, rectY: Integer, rectWidth: Integer, rectHeight: Integer, columns: Integer, rows: Integer, index: Integer) → Integer
返回将矩形按列和行拆分为网格后某个单元格的左边缘。剩余的像素依次分给前面的列,每列一个。
参数
rectX: Integer— 要拆分的矩形的左边缘,以像素为单位。rectY: Integer— 要拆分的矩形的上边缘,以像素为单位。rectWidth: Integer— 矩形的宽度,以像素为单位。必须大于 0。rectHeight: Integer— 矩形的高度,以像素为单位。必须大于 0。columns: Integer— 网格中的列数。必须大于 0。rows: Integer— 网格中的行数。必须大于 0。index: Integer— 从 0 开始的单元格编号,从左到右、再从上到下计数,范围为 0 到列数乘以行数减 1。
返回值
单元格的左边缘;如果 index 超出范围,或 rectWidth、rectHeight、columns 或 rows 不是正数,则为 -1。真实的单元格也可能从 -1 开始,因此请先检查 index。
1 个示例: 将窗口贴靠到光标下方的 3×2 网格单元格中
RegionGetY
RegionGetY(rectX: Integer, rectY: Integer, rectWidth: Integer, rectHeight: Integer, columns: Integer, rows: Integer, index: Integer) → Integer
返回将矩形按列和行拆分为网格后某个单元格的上边缘。剩余的像素依次分给前面的行,每行一个。
参数
rectX: Integer— 要拆分的矩形的左边缘,以像素为单位。rectY: Integer— 要拆分的矩形的上边缘,以像素为单位。rectWidth: Integer— 矩形的宽度,以像素为单位。必须大于 0。rectHeight: Integer— 矩形的高度,以像素为单位。必须大于 0。columns: Integer— 网格中的列数。必须大于 0。rows: Integer— 网格中的行数。必须大于 0。index: Integer— 从 0 开始的单元格编号,从左到右、再从上到下计数,范围为 0 到列数乘以行数减 1。
返回值
单元格的上边缘;如果 index 超出范围,或 rectWidth、rectHeight、columns 或 rows 不是正数,则为 -1。真实的单元格也可能从 -1 开始,因此请先检查 index。
1 个示例: 将窗口贴靠到光标下方的 3×2 网格单元格中
Serial
SerialClosePort
SerialClosePort(port: Text) → Bool
关闭用 SerialOpenPort 打开的 COM 端口,将其释放给其他程序(例如 Arduino IDE)使用。尚未读取的接收行将被丢弃。
参数
port: Text— 传给 SerialOpenPort 的端口名称,例如 COM3。不区分大小写。
返回值
如果端口原先已打开且现已关闭,则为 true;如果端口未打开,或被串口监视器占用(请使用 SerialMonitorDelete),则为 false。
1 个示例: 向串口设备提问
SerialEnumeratePorts
SerialEnumeratePorts() → Integer
查找此计算机上的串行 (COM) 端口,例如通过 USB 连接的 Arduino、ESP32 或 USB 转串口适配器,并返回其数量。使用 SerialGetEnumeratedPortAt 读取每个名称。
参数
无参数。
返回值
找到的 COM 端口数;如果没有,则为 0。
1 个示例: 列出 COM 端口
SerialGetEnumeratedPortAt
SerialGetEnumeratedPortAt(index: Integer) → Text
从本次脚本运行中最近一次 SerialEnumeratePorts 调用生成的列表中返回一个端口名称,例如 COM3。设备管理器会显示哪个设备位于哪个端口上。
参数
index: Integer— 在列表中的位置,范围为 0 到数量减 1。名称按编号排序,因此 COM3 排在 COM10 之前。
返回值
端口名称;如果 index 超出范围或尚未调用 SerialEnumeratePorts,则返回空文本。
1 个示例: 列出 COM 端口
SerialGetTextLine
SerialGetTextLine(port: Text, timeoutSeconds: Integer, baudRate: Integer) → Text
等待来自 COM 端口的下一个完整行并将其返回,例如传感器读数、条形码扫描结果或设备的回复。最多阻塞脚本 timeoutSeconds 秒;“全部停止”会结束等待。
参数
port: Text— 端口名称,例如 COM3。请先用 SerialOpenPort 打开它,以便选择设置并保留提前到达的行;否则它只会为此次等待以 baudRate 打开。timeoutSeconds: Integer— 最长等待时间,以秒为单位。0 表示一直等到收到一行或脚本被停止。负值会使脚本因错误而停止。baudRate: Integer— 速度,以每秒位数为单位,仅在此调用自己打开端口时使用,例如 9600 或 115200;对于用 SerialOpenPort 打开的端口,将忽略此值。0 或更小的值会使脚本因错误而停止。
返回值
不含终止符的行;如果未及时收到行、无法打开端口或设备已拔出,则返回空文本。如果串口监视器占用该端口,脚本将因错误而停止。
2 个示例: 向串口设备提问, 保持 Arduino 的端口打开并向其发送命令
SerialMonitorCreate
SerialMonitorCreate(name: Text, port: Text, baudRate: Integer, parity: Integer, dataBits: Integer, stopBits: Integer, terminator: Text, script: Text) → Bool
打开一个 COM 端口,并针对设备发送的每一行运行一个脚本,例如将 Arduino 按钮盒或宏键盘变成快捷方式。此脚本结束后,监视器仍会继续运行。“全部停止”会停止正在为某一行运行的脚本并丢弃等待中的行;监视器继续运行。
参数
name: Text— 监视器的名称。重复使用该端口当前监视器的名称会替换该监视器;如果该名称已在监视另一个端口,脚本将因错误而停止。不区分大小写。port: Text— 端口名称,例如 COM3。设备管理器会显示开发板位于哪个端口上。baudRate: Integer— 速度,以位/秒为单位。必须与设备一致,例如 Arduino 草图的 Serial.begin 中的 9600 或 115200。parity: Integer— 一个 SerialParity 常量。大多数设备(包括 Arduino 开发板)使用 SerialParity.None。dataBits: Integer— 每个字符的位数,以普通数字表示。几乎所有设备都使用 8。stopBits: Integer— 一个 SerialStopBits 常量,通常为 SerialStopBits.One。请使用常量:普通数字 1 表示 1.5 个停止位。terminator: Text— 结束每一行的文本:会从接收到的行中移除,并添加到 SerialWriteTextLine 发送的每一行末尾。空文本表示 CR LF,即 Arduino 的 Serial.println 发送的内容。对于仅以 LF 结束行的设备,请使用 '\n';对于仅以 CR 结束行的设备,请使用 '\r'。script: Text— 针对每个接收行运行的脚本,类型为 Text。它通过 ContextGetSerialTextLine 读取该行。各行按到达顺序逐一运行;脚本运行期间最多可有 256 行等待,超出后会丢弃最早的行。
返回值
监视器开始运行后为 true;如果端口不存在、已拔出或正被其他程序使用,则为 false。如果端口已用 SerialOpenPort 打开或已在另一个名称下被监视,或者此名称已在监视另一个端口,脚本将因错误而停止。拔出设备会结束该监视器,并在控制台的“系统”选项卡中记录一行。
2 个示例: 将串口设备的按钮映射到媒体键, 将 Arduino 旋钮变成音量控制
SerialMonitorDelete
SerialMonitorDelete(name: Text) → Bool
停止用 SerialMonitorCreate 创建的串口监视器并关闭其 COM 端口,使其他程序可以再次使用该端口。尚未处理的行会被丢弃;已在运行的脚本会运行完毕。
参数
name: Text— 传给 SerialMonitorCreate 的名称。不区分大小写。
返回值
如果找到并停止了具有该名称的监视器,则为 true;如果没有这样的监视器,则为 false。
SerialMonitorDeleteAll
SerialMonitorDeleteAll() → Bool
停止所有串口监视器并关闭其 COM 端口。用 SerialOpenPort 打开的端口保持打开状态。
参数
无参数。
返回值
始终为 true。
SerialMonitorGetCount
SerialMonitorGetCount() → Integer
返回正在运行的串口监视器的数量,并为 SerialMonitorGetEnumeratedNameAt 创建其名称的快照。
参数
无参数。
返回值
正在运行的串口监视器的数量;如果没有,则为 0。
SerialMonitorGetEnumeratedNameAt
SerialMonitorGetEnumeratedNameAt(index: Integer) → Text
从本次脚本运行中最近一次 SerialMonitorGetCount 调用创建的快照中返回一个监视器名称。
参数
index: Integer— 在快照中的位置,范围为 0 到数量减 1。顺序没有意义。
返回值
监视器名称;如果 index 超出范围或尚未调用 SerialMonitorGetCount,则返回空文本。
SerialOpenPort
SerialOpenPort(port: Text, baudRate: Integer, parity: Integer, dataBits: Integer, stopBits: Integer, terminator: Text) → Bool
打开一个 COM 端口并保持打开状态,直到调用 SerialClosePort,同时收集接收到的每一行供 SerialGetTextLine 读取。打开端口时会开启 DTR 和 RTS 信号,这会像 Arduino IDE 一样使许多 Arduino 开发板重新启动,因此请只打开一次并重复使用。
参数
port: Text— 端口名称,例如 COM3。设备管理器或 SerialEnumeratePorts 会显示该名称。空文本会使脚本因错误而停止。baudRate: Integer— 速度,以位/秒为单位。必须与设备一致,例如 Arduino 草图的 Serial.begin 中的 9600 或 115200。parity: Integer— 一个 SerialParity 常量。大多数设备(包括 Arduino 开发板)使用 SerialParity.None。dataBits: Integer— 每个字符的位数,以普通数字表示。几乎所有设备都使用 8。stopBits: Integer— 一个 SerialStopBits 常量,通常为 SerialStopBits.One。请使用常量:普通数字 1 表示 1.5 个停止位。terminator: Text— 结束每一行的文本:会从接收到的行中移除,并添加到 SerialWriteTextLine 发送的每一行末尾。空文本表示 CR LF,即 Arduino 的 Serial.println 发送的内容。对于仅以 LF 结束行的设备,请使用 '\n';对于仅以 CR 结束行的设备,请使用 '\r'。
返回值
如果端口已打开,则为 true;如果端口不存在、已拔出、正被其他程序(例如串口监视器)使用,或拒绝了这些设置,则为 false。如果 Input.Observer 已打开该端口或串口监视器占用该端口,脚本将因错误而停止。
2 个示例: 向串口设备提问, 保持 Arduino 的端口打开并向其发送命令
SerialWriteTextLine
SerialWriteTextLine(port: Text, text: Text, baudRate: Integer) → Bool
向 COM 端口发送一行文本外加该端口的行尾符,例如发给 Arduino 的命令或发给 3D 打印机的 G-code 行。适用于用 SerialOpenPort 打开或被串口监视器占用的端口,因此监视器的脚本可以应答其设备。未打开的端口会以 baudRate、8-N-1 打开,仅用于此次写入。
参数
port: Text— 端口名称,例如 COM3。请先用 SerialOpenPort 打开它,以便选择设置,并避免重新启动那些在端口打开时会复位的开发板。text: Text— 要发送的行,以 UTF-8 编码。请勿添加行尾符:系统会添加打开端口时指定的 terminator;如果是此调用自己打开端口,则添加 CR LF。baudRate: Integer— 速度,以每秒位数为单位,仅在此调用自己打开端口时使用,例如 9600 或 115200;对于已打开或被监视的端口,将忽略此值。0 或更小的值会使脚本因错误而停止。
返回值
如果已发送该行,则为 true;如果无法打开端口,或写入失败或超时,则为 false。
2 个示例: 向串口设备提问, 保持 Arduino 的端口打开并向其发送命令
Shell
ShellEmptyRecycleBins
ShellEmptyRecycleBins() → Bool · 简单
永久删除所有驱动器上回收站中的全部内容,且不要求确认。此操作无法撤消。
参数
无参数。
返回值
如果回收站已清空或本来就是空的,则为 true;否则为 false。
ShellEnumerateProcessIdsByExeRegex
ShellEnumerateProcessIdsByExeRegex(pattern: Text) → Integer
查找程序文件名(例如 notepad.exe)与正则表达式匹配的所有正在运行的进程,并返回其数量。使用 ShellGetEnumeratedProcessIdAt 读取每个进程 ID。
参数
pattern: Text— 一个正则表达式,不区分大小写,仅与文件名而非完整路径进行匹配。使用 ^ 和 $ 匹配整个名称,例如 ^notepad[.]exe$。
返回值
匹配的进程数;如果没有匹配项,则为 0。无效的模式会使脚本因错误而停止。
1 个示例: 从进程到窗口
ShellExpandEnvironmentVariables
ShellExpandEnvironmentVariables(text: Text) → Text
将 text 中的每个环境变量(写在两个百分号之间的名称,例如 USERPROFILE 或 TEMP)替换为其值。可用于构建在任何电脑上都有效的路径。
参数
text: Text— 包含写在百分号之间的环境变量名称的文本,例如用户配置文件夹中的某个路径。
返回值
所有已知变量都已替换的文本;未知变量保持原样。如果展开失败,则返回空文本。
8 个示例: 今天的日期,以及带时间戳的文件名, 截取您圈出的区域, 将复制的图像保存到文件, 追加到日志文件, 统计文件夹中的文件类型, 编辑前备份文件, 监视文件夹, 展开环境变量
ShellGetEnumeratedProcessIdAt
ShellGetEnumeratedProcessIdAt(index: Integer) → Integer
从本次脚本运行中最近一次 ShellEnumerateProcessIdsByExeRegex 调用生成的列表中返回一个进程 ID。
参数
index: Integer— 在列表中的位置,范围为 0 到数量减 1。
返回值
进程 ID;如果 index 超出范围或尚未调用 ShellEnumerateProcessIdsByExeRegex,则为 0。
1 个示例: 从进程到窗口
ShellGetSystemMetricsByIndex
ShellGetSystemMetricsByIndex(index: Integer) → Integer
按 GetSystemMetrics 索引返回 Windows 系统的某项度量值或设置,例如 0 表示主屏幕宽度,80 表示显示器数量。
参数
index: Integer— Windows SM_ 索引号,例如 0 (SM_CXSCREEN) 或 1 (SM_CYSCREEN)。这些索引没有命名常量。
返回值
Windows 报告的值(通常以像素为单位);对于未知索引,则为 0。
ShellRun
ShellRun(command: Text) → Bool · 简单
运行程序或打开文件、文件夹或网址,就像在 Windows 的“运行”对话框 (Win+R) 中键入一样。不会等待程序结束。
参数
command: Text— 程序名称(例如 notepad.exe)、路径或网址,后面可以跟参数。当包含空格的路径后面跟有参数时,请将该路径放在单引号中。
返回值
如果 Windows 已启动它,则为 true;如果找不到或无法启动它,则为 false。失败时不会显示 Windows 错误框。
4 个示例: while 循环:等待窗口出现,带超时, 启动程序、等待其窗口出现并对其操作, 在网上搜索所选文本, 在网上搜索所选内容
ShellRunOrActivate
ShellRunOrActivate(exeName: Text) → Bool · 简单
如果程序已在运行,则将其窗口置于前台;否则运行该命令。适用于始终将您带到同一程序的手势。
参数
exeName: Text— 程序的文件名(例如 notepad 或 notepad.exe)或其完整路径,后面可以跟仅在需要启动程序时使用的参数。正在运行的窗口按第一个词的文件名匹配,没有扩展名时会添加 .exe;包含空格的路径请放在单引号中。
返回值
如果已将窗口置于前台或已启动程序,则为 true;如果 Windows 拒绝将窗口置于前台或启动失败,则为 false。
1 个示例: 启动或切换到某个应用
ShellRunProgram
ShellRunProgram(path: Text, arguments: Text, verb: Any, windowStyle: Integer, waitForExit: Bool) → Bool
以选定的操作 (verb) 和窗口样式运行程序或打开文件,并可等待其关闭。使用 ShellVerb.RunAs 可以管理员身份运行程序。
参数
path: Text— 要打开的程序、文档或文件夹,例如 notepad.exe 或完整的文件路径。arguments: Text— 程序的命令行参数;无参数时为空文本。verb: Any— 一个 ShellVerb 常量,例如 ShellVerb.Open 或 ShellVerb.Print,或者以 Text 形式给出的该文件类型支持的任何 verb。空文本使用默认操作。windowStyle: Integer— 一个 WindowStyle 常量:WindowStyle.Normal、WindowStyle.Minimized、WindowStyle.Maximized 或 WindowStyle.Hidden。任何其他值都会使脚本因错误而停止。某些程序会忽略此设置。waitForExit: Bool— true 表示阻塞脚本直到程序关闭;“全部停止”会结束等待,但程序继续运行。false 表示立即继续。
返回值
如果 Windows 已启动它(并且在使用 waitForExit 时它已关闭),则为 true;如果无法启动、管理员提示被拒绝,或“全部停止”结束了等待,则为 false。失败时不会显示 Windows 错误框。
2 个示例: 使用谓词和窗口样式运行程序, 运行并等待退出
ShellRunStoreApp
ShellRunStoreApp(packageName: Text) → Bool · 简单
按包名称、包名称的一部分或其“开始”菜单名称(例如 Microsoft.WindowsCalculator 或计算器)启动已安装的 Microsoft Store 应用。不匹配普通桌面程序;对于这些程序,请使用 ShellRun。
参数
packageName: Text— 应用的包系列名称或其一部分,或其确切的“开始”菜单名称,不区分大小写进行匹配。优先匹配确切的包系列名称,其次是确切的“开始”菜单名称,最后是包系列名称包含该文本的第一个应用。
返回值
如果已启动应用,则为 true;如果 packageName 为空、没有匹配的已安装 Store 应用或启动失败,则为 false。
ShellShowToast
ShellShowToast(title: Text, message: Text) → Bool · 简单
显示带有标题和消息的 Windows 通知(toast)。只等待 Windows 接受该通知,而不等待其被关闭。
参数
title: Text— 通知的第一行,以粗体显示。message: Text— 显示在标题下方的文本。
返回值
如果已显示通知,则为 true;如果在“常规”设置中关闭了通知、Windows 拒绝了该通知,或“全部停止”结束了等待,则为 false。
9 个示例: 将窗口置顶, 截取您圈出的区域, 将复制的图像保存到文件, 在多次运行之间保持的开关, Windows 通知, 切换麦克风静音, 运行并等待退出, 切换到下一个手势配置方案, 引擎状态
ShellTerminateProcess
ShellTerminateProcess(processId: Integer) → Bool
立即结束进程,就像任务管理器中的“结束任务”一样。该程序中未保存的工作将会丢失。
参数
processId: Integer— 进程 ID,例如来自 WindowGetProcessId 或 ShellGetEnumeratedProcessIdAt。0 或更小的值、Input.Observer 自身的进程以及 Windows 系统进程都会使脚本因错误而停止。
返回值
如果已结束进程,则为 true;如果进程已退出或 Windows 拒绝访问(例如对于以管理员身份运行的程序),则为 false。
Snippet
SnippetExecuteScript
SnippetExecuteScript(name: Text) → Bool · 简单
运行具有此名称的代码片段,并等待其完成。代码片段可以看到调用方的触发器上下文,但拥有自己的变量。
参数
name: Text— 代码片段的名称,须完全匹配,包括大小写。
返回值
如果代码片段运行到结尾,则为 true;如果没有代码片段具有该名称,或代码片段为空、有错误或被停止,则为 false。
1 个示例: 将代码片段用作可重用函数
SnippetGetScript
SnippetGetScript(name: Text) → Text
返回具有此名称的代码片段的脚本文本而不运行它,例如用于传给 TimerCreate。
参数
name: Text— 代码片段的名称,须完全匹配,包括大小写。
返回值
代码片段的脚本文本;如果没有代码片段具有该名称,则返回空文本。
1 个示例: 来自代码片段的计时器脚本,无需转义
Storage
StorageClearAll
StorageClearAll() → Bool
删除用 StorageSetValue 存储的所有值(针对所有操作)。持久值不受影响。
参数
无参数。
返回值
始终为 true。
StorageClearAllPersistent
StorageClearAllPersistent() → Bool
删除所有持久值并将其从 storage.toml 中清除,因此重新启动后这些值都不会恢复。用 StorageSetValue 存储的值不受影响。
参数
无参数。
返回值
始终为 true。
StorageClearPersistentValue
StorageClearPersistentValue(key: Text) → Bool
删除一个持久值并将其从 storage.toml 中清除。如果该键未存储,则不执行任何操作。
参数
key: Text— 要删除的值的名称。区分大小写。
返回值
始终为 true,无论该键是否已存储。
StorageClearValue
StorageClearValue(key: Text) → Bool
删除一个用 StorageSetValue 存储的值。如果该键未存储,则不执行任何操作。
参数
key: Text— 要删除的值的名称。区分大小写。
返回值
始终为 true,无论该键是否已存储。
StorageGetPersistentValue
StorageGetPersistentValue(key: Text) → Any
读取用 StorageSetPersistentValue 保存的值,包括在 Input.Observer 上次重新启动之前保存的值。
参数
key: Text— 保存该值时使用的名称。区分大小写。
返回值
存储的值及其类型(Bool、Integer、Real 或 Text);如果该键未存储,则为 Integer 0。使用 StorageHasPersistentValue 区分缺失的键和存储的 0。
1 个示例: 重启后仍保留的计数器
StorageGetValue
StorageGetValue(key: Text) → Any
读取自 Input.Observer 启动以来由此操作或任何其他操作用 StorageSetValue 存储的值。
参数
key: Text— 存储该值时使用的名称。区分大小写。
返回值
存储的值及其类型(Bool、Integer、Real、Text 或 Window);如果该键未存储,则为 Integer 0。使用 StorageHasValue 区分缺失的键和存储的 0。
5 个示例: && 和 || 会对两侧都求值, 会计数的重复计时器, 在多次运行之间保持的开关, 保存在 Storage 中的列表, 将代码片段用作可重用函数
StorageHasPersistentValue
StorageHasPersistentValue(key: Text) → Bool
检查某个名称下是否存储了持久值。可用于区分缺失的键和存储的 0、false 或空文本。
参数
key: Text— 要查找的名称。区分大小写。
返回值
如果 key 下存储了持久值,则为 true;否则为 false。
StorageHasValue
StorageHasValue(key: Text) → Bool
检查某个名称下是否用 StorageSetValue 存储了值。可用于区分缺失的键和存储的 0、false 或空文本。
参数
key: Text— 要查找的名称。区分大小写。
返回值
如果 key 下存储了值,则为 true;否则为 false。
StorageSetPersistentValue
StorageSetPersistentValue(key: Text, value: Any) → Bool
将值保存在一个可在重新启动后保留的名称下,存储于配置文件旁边的 storage.toml 中。该文件为纯文本,从不加密:请勿在其中保存密码或其他机密信息。
参数
key: Text— 保存时使用的名称,最多 256 个字符。区分大小写。会替换该名称下已存储的任何值。value: Any— 要保存的值:Bool、Integer、Real 或 Text(最多 32,768 个字符)。读回时类型保持不变。无法保存 Window。
返回值
值存储后为 true。如果 storage.toml 存在但在启动时无法读取,则为 false:此时保存功能会关闭到下次启动为止,该值只保留到 Input.Observer 退出。窗口值、超过 256 个字符的键、超过 32,768 个字符的 Text,或在已存储 1,024 个值之后的新键,都会使操作因错误而停止。
1 个示例: 重启后仍保留的计数器
StorageSetValue
StorageSetValue(key: Text, value: Any) → Bool
将值存储在某个名称下,以便此操作或任何其他操作以后运行时可以读取。值会一直保留到 Input.Observer 退出;若要在重新启动后保留,请使用 StorageSetPersistentValue。
参数
key: Text— 存储时使用的名称,最多 256 个字符。区分大小写。会替换该名称下已存储的任何值,无论其类型如何。value: Any— 要存储的值:Bool、Integer、Real、Text(最多 32,768 个字符)或 Window。读回时类型保持不变。
返回值
值存储后为 true。超过 256 个字符的键、超过 32,768 个字符的 Text,或在已存储 1,024 个值之后的新键,都会使操作因错误而停止。
5 个示例: && 和 || 会对两侧都求值, 会计数的重复计时器, 在多次运行之间保持的开关, 保存在 Storage 中的列表, 将代码片段用作可重用函数
String
StringContains
StringContains(text: Text, search: Text) → Bool
检查文本中是否在任意位置包含另一段文本。大小写必须一致;若要进行不区分大小写的检查,请对两者都使用 StringToLower。
参数
text: Text— 要在其中搜索的文本。search: Text— 要查找的文本。
返回值
如果 search 出现在 text 中或 search 为空,则为 true;否则为 false。
1 个示例: 不区分大小写的比较
StringEndsWith
StringEndsWith(text: Text, suffix: Text) → Bool
检查文本是否以给定的一段文本(例如文件扩展名)结尾。大小写必须一致。
参数
text: Text— 要检查的文本。suffix: Text— 要查找的结尾,例如 '.pdf'。
返回值
如果 text 以 suffix 结尾或 suffix 为空,则为 true;否则为 false。
1 个示例: 统计文件夹中的文件类型
StringFormat
StringFormat(format: Text, value0: Any, value1: Any) → Text
将 format 中的每个 {0} 替换为 value0,将每个 {1} 替换为 value1,从而生成文本。这是将数字、Bool 或窗口转换为 Text 的方法。
参数
format: Text— 带有 {0} 和 {1} 占位符的文本。没有 {2};如需更多值,请嵌套调用。{0} 先被替换,因此 value0 中的 {1} 也会被替换。value0: Any— {0} 的值,可以是任何类型。value1: Any— {1} 的值,可以是任何类型。如果 format 中没有 {1},请传入空文本。
返回值
占位符已被替换的格式文本。Real 显示六位小数;true 和 false 显示为单词。
50 个示例: 五种值类型, 计数循环:递增、递减和按步长, 嵌套循环:乘法表, 带退出标志的 while (true), 意外的优先级, && 和 || 会对两侧都求值, 不同类型之间的相等比较, 混合类型算术回退为 0, 注释、空语句和块, Integer 与 Real 除法,以及除以零, 不用 % 求余数, 舍入和 Real 数学内置函数, 将值限制在范围内, 随机数和抛硬币, 手势笔画的长度, 格式化 Real 而不显示六位小数, 标志掩码:设置、清除、切换、测试, 读取光标下的像素颜色, 统计置位的位数, 移位的边界情况, 交换两个 Integer, 按键状态位, 格式化两个以上的值, 拆分并遍历, 嵌套拆分:key=value 键值对, 最后一次出现的位置:文件扩展名, 数字补零, 统计剪贴板中的单词数, Text 排序按序数进行, 命名常量与原始数字, 列出可见的顶层窗口, 最小化某个应用的所有窗口, 确认后按标题模式关闭窗口, 检查窗口的子控件, 从进程到窗口, 描述光标下方的内容, 触发上下文知道的一切, 追加到日志文件, 读取文件并统计行数, 统计文件夹中的文件类型, 会计数的重复计时器, 重启后仍保留的计数器, 保存在 Storage 中的列表, 调高音量并显示屏幕提示, 实时更新的显示消息, Windows 通知, 列出显示器, 引擎状态, 将代码片段用作可重用函数, 保持 Arduino 的端口打开并向其发送命令
StringFromNumber
StringFromNumber(number: Any, decimals: Integer, invariantCulture: Bool) → Text
将数字转换为文本,可以采用带数字分组的用户区域格式以便显示,也可以采用固定的机器格式以用于文件和设备。
参数
number: Any— 要转换的 Integer 或 Real。decimals: Integer— 小数分隔符后的位数,范围为 0 到 15,并进行舍入;或为 -1,表示按值的需要保留位数(Integer 不保留小数)。invariantCulture: Bool— true 表示机器文本:以句点作为小数点,不分组,可用 StringToNumber(text, true) 读回。false 表示用户的区域格式。
返回值
以文本表示的数字,例如 1,234.50 或 1234.5。如果 Real 不是有限数字,则返回空文本。不是数字的值或超出范围的 decimals 会使操作因错误而停止。
1 个示例: 读取用户键入的数字
StringGetIndexOf
StringGetIndexOf(text: Text, search: Text) → Integer
查找一段文本在另一段文本中首次出现的位置。大小写必须一致。位置从 0 开始。
参数
text: Text— 要在其中搜索的文本。search: Text— 要查找的文本。
返回值
首次出现位置(从 0 开始);如果 search 为空,则为 0;如果 search 未出现在 text 中,则为 -1。
1 个示例: && 和 || 会对两侧都求值
StringGetLength
StringGetLength(text: Text) → Integer
返回文本中的字符数,空格和换行符也计算在内。StringGetSubstring 使用的位置也按同样方式计数。
参数
text: Text— 要测量的文本。
返回值
字符数;空文本为 0。某些表情符号和罕见字符计为 2。
3 个示例: 最后一次出现的位置:文件扩展名, 数字补零, 反转 Text
StringGetSplitPartAt
StringGetSplitPartAt(index: Integer) → Text
从本次脚本运行中最近一次 StringSplit 调用的结果中返回一个部分。
参数
index: Integer— 从 0 开始的部分编号,范围为 0 到 StringSplit 返回的数量减 1。
返回值
该部分的文本;如果 index 超出范围或本次运行中尚未调用 StringSplit,则返回空文本。
6 个示例: break 和 continue, 拆分并遍历, 嵌套拆分:key=value 键值对, 统计剪贴板中的单词数, 将剪贴板中的多行合并为一行, 读取文件并统计行数
StringGetSubstring
StringGetSubstring(text: Text, start: Integer, length: Integer) → Text
返回文本的一部分:从位置 start 开始,最多 length 个字符。位置从 0 开始。
参数
text: Text— 要从中截取部分的文本。start: Integer— 要截取的第一个字符的位置(从 0 开始)。不得为负数。length: Integer— 最多截取的字符数。不得为负数。
返回值
请求的部分,如果文本先结束则会更短;如果 start 位于末尾或超出末尾,则返回空文本。负的 start 或 length 会使操作因错误而停止。
4 个示例: && 和 || 会对两侧都求值, Integer 转十六进制文本, 最后一次出现的位置:文件扩展名, 反转 Text
StringIsNumber
StringIsNumber(text: Text, invariantCulture: Bool) → Bool
检查文本是否为 StringToNumber 可以读取的数字,例如用户在 UIShowInputBox 中键入的内容。数字前后的空格将被忽略。
参数
text: Text— 要检查的文本。invariantCulture: Bool— true 表示机器文本:以句点作为小数点,不使用数字分组。false 表示用户的区域格式,即用户通常键入的形式;此时数字分组必须符合该格式的分组大小。
返回值
如果文本是所选格式的数字,则为 true;否则为 false,包括空文本的情况。
2 个示例: 读取用户键入的数字, 将 Arduino 旋钮变成音量控制
StringRegexGetGroupAt
StringRegexGetGroupAt(index: Integer) → Text
从本次脚本运行中最近一次成功的 StringRegexMatch 调用中返回整个匹配项或一个捕获组。
参数
index: Integer— 0 表示整个匹配项;1 及以上表示捕获组,按其左括号出现的顺序编号。命名组也会编号。
返回值
匹配的文本;如果 index 超出范围、该组未参与匹配,或上一次 StringRegexMatch 未找到匹配项,则返回空文本。
1 个示例: 用正则表达式从复制的文本中提取值
StringRegexMatch
StringRegexMatch(text: Text, pattern: Text) → Bool
检查正则表达式(PCRE2 语法)是否与文本中的任意位置匹配,并记住匹配项及其组以供 StringRegexGetGroupAt 使用。
参数
text: Text— 要搜索的文本。pattern: Text— 正则表达式。区分大小写;以 (?i) 开头可忽略大小写。单词和数字等字符类遵循 Unicode。
返回值
如果模式匹配,则为 true;否则为 false。无效的模式,或在此文本上需要过多步骤的模式,会使操作因错误而停止。
1 个示例: 用正则表达式从复制的文本中提取值
StringRegexReplace
StringRegexReplace(text: Text, pattern: Text, replacement: Text) → Text
替换文本中正则表达式(PCRE2 语法)的每个匹配项,替换内容可以包含匹配的组。
参数
text: Text— 要更改的文本。pattern: Text— 正则表达式。区分大小写;以 (?i) 开头可忽略大小写。replacement: Text— 用于替换每个匹配项的文本。$1 或 ${1} 插入第 1 组,${name} 插入命名组,$0 插入整个匹配项,$$ 插入一个字面美元符号。
返回值
每个匹配项都已替换的文本;如果没有匹配项,则返回未更改的 text。无效的模式或替换内容、步骤过多,或结果超过 1600 万个字符,都会使操作因错误而停止。
1 个示例: 用正则表达式从复制的文本中提取值
StringReplace
StringReplace(text: Text, search: Text, replacement: Text) → Text
将一段文本的每次出现都替换为另一段文本。大小写必须一致。搜索内容为字面文本,而不是模式。
参数
text: Text— 要更改的文本。search: Text— 要查找的文本。不得为空。replacement: Text— 要放在其位置的文本。可以为空,以删除每次出现。
返回值
每次出现都已替换的文本;如果 search 未出现,则返回未更改的 text。空的 search 会使操作因错误而停止。
3 个示例: 统计剪贴板中的单词数, 填充模板并粘贴, 在网上搜索所选内容
StringSplit
StringSplit(text: Text, delimiter: Text) → Integer
在分隔符每次出现的位置将文本拆分为多个部分,并记住这些部分以供 StringGetSplitPartAt 使用。相邻的分隔符或位于两端的分隔符会产生空的部分。
参数
text: Text— 要拆分的文本。delimiter: Text— 用于拆分的字面文本,例如 ',' 或换行符。不得为空。
返回值
部分的数量,至少为 1。空的分隔符会使操作因错误而停止。
6 个示例: break 和 continue, 拆分并遍历, 嵌套拆分:key=value 键值对, 统计剪贴板中的单词数, 将剪贴板中的多行合并为一行, 读取文件并统计行数
StringStartsWith
StringStartsWith(text: Text, prefix: Text) → Bool
检查文本是否以给定的一段文本开头。大小写必须一致。
参数
text: Text— 要检查的文本。prefix: Text— 要查找的开头。
返回值
如果 text 以 prefix 开头或 prefix 为空,则为 true;否则为 false。
2 个示例: break 和 continue, 读取文件并统计行数
StringToLower
StringToLower(text: Text) → Text
将文本转换为小写,遵循用户 Windows 区域格式的大小写规则(例如土耳其语中带点和不带点的 i)。
参数
text: Text— 要转换的文本。
返回值
小写文本;如果 Windows 无法转换,则返回未更改的 text。
4 个示例: 不区分大小写的比较, Text 排序按序数进行, 放行未识别的绘制, 统计文件夹中的文件类型
StringToNumber
StringToNumber(text: Text, invariantCulture: Bool) → Any
从文本(例如用户输入、文件或串行设备)中读取数字。数字前后的空格将被忽略;允许使用 1.5e3 这样的指数。
参数
text: Text— 要读取的文本。invariantCulture: Bool— true 表示机器文本:以句点作为小数点,不使用数字分组,因此 '1,5' 不是数字。false 表示用户的区域格式,即用户通常键入的形式;此时数字分组必须符合该格式,因此在中文(简体,中国)格式下可以读取 '1,234.5',但不能读取 '1,5'。
返回值
如果文本不含小数分隔符或指数且数值可以容纳,则为 Integer,否则为 Real。如果文本不是数字,则为 0;请先用 StringIsNumber 检查。
2 个示例: 读取用户键入的数字, 将 Arduino 旋钮变成音量控制
StringToUpper
StringToUpper(text: Text) → Text
将文本转换为大写,遵循用户 Windows 区域格式的大小写规则(例如土耳其语中带点和不带点的 i)。
参数
text: Text— 要转换的文本。
返回值
大写文本;如果 Windows 无法转换,则返回未更改的 text。
StringTrim
StringTrim(text: Text) → Text
删除文本开头和结尾的空格、制表符、换行符及其他空白。文本内部的空白将保留。
参数
text: Text— 要修剪的文本。
返回值
修剪后的文本;如果 text 仅包含空白,则返回空文本。
6 个示例: 统计剪贴板中的单词数, 将剪贴板中的多行合并为一行, 在网上搜索所选文本, 在网上搜索所选内容, 读取文件并统计行数, 将串口设备的按钮映射到媒体键
StringUrlEncode
StringUrlEncode(text: Text) → Text · 简单
对文本进行编码,使其可以放入网址中,例如根据选定文本构建的搜索词。仅对值进行编码,而不是对整个网址进行编码。
参数
text: Text— 要编码的文本,例如搜索词。
返回值
编码后的文本:字母、数字以及 - . _ ~ 保持不变;UTF-8 文本的其他每个字节都变为由百分号加两位十六进制数字组成的转义序列。空格变为百分号加 20,而不是加号。
1 个示例: 在网上搜索所选文本
Style
StyleGetCurrent
StyleGetCurrent() → Text · 简单
返回渲染器插件当前绘制的轨迹样式的键,例如 neonglow;选择“随机”时返回 shuffle。
参数
无参数。
返回值
样式的键;如果未选择可用的样式,则为渲染器的默认样式;如果没有渲染器在运行或它尚未报告其样式,则返回空文本。
StyleNext
StyleNext() → Bool · 简单
选择渲染器列表中的下一个未锁定的轨迹样式,到达末尾时回到开头。新样式从下一个手势开始绘制。
参数
无参数。
返回值
如果已请求更改样式,则为 true;如果没有渲染器在运行或没有其他可选择的样式,则为 false。
StyleSet
StyleSet(key: Text) → Bool · 简单
选择渲染器中具有此键的轨迹样式,从下一个手势开始绘制。拥有自己样式的绘制按钮会保留其样式。
参数
key: Text— 样式的键,例如 neonglow 或 auto;不区分大小写。使用 shuffle 可让每个手势使用不同的样式。
返回值
如果已请求更改样式,则为 true;如果没有渲染器在运行、没有样式具有该键或该样式已锁定,则为 false。
System
SystemHibernate
SystemHibernate() → Bool · 简单
使计算机休眠而不进行询问。脚本在此处等待,并在计算机重新开启后继续运行。如果在 Windows 中关闭了休眠,则不执行任何操作。
参数
无参数。
返回值
计算机休眠并恢复后为 true;如果休眠不可用或 Windows 拒绝了请求,则为 false。
SystemLock
SystemLock() → Bool · 简单
锁定计算机并显示 Windows 登录屏幕,与 Windows+L 的效果相同。应用会继续运行。
参数
无参数。
返回值
如果 Windows 已锁定计算机,则为 true;如果 Windows 拒绝了请求(例如因为某项策略禁用了锁定),则为 false。
SystemMonitorOff
SystemMonitorOff() → Bool · 简单
关闭显示器。下一次鼠标移动或按键会重新打开显示器,因此由手势启动的脚本应先调用 UtilityWait(500)。
参数
无参数。
返回值
请求已发送到 Windows 后为 true;如果无法发送,则为 false。
SystemRestart
SystemRestart(force: Bool) → Bool · 简单
重新启动计算机而不要求确认;Windows 会先关闭正在运行的应用。如果需要确认,请先显示 UIShowMessageBox。
参数
force: Bool— false 允许应用请求保存未保存的工作(只有无响应的应用才会被强制关闭);true 会立即关闭所有应用,未保存的工作将会丢失。
返回值
如果 Windows 接受了重新启动请求(之后将自行继续),则为 true;如果 Windows 拒绝了该请求,则为 false。
SystemShutDown
SystemShutDown(force: Bool) → Bool · 简单
关闭计算机并切断电源,而不要求确认。如果需要确认,请先显示 UIShowMessageBox。
参数
force: Bool— false 允许应用请求保存未保存的工作(只有无响应的应用才会被强制关闭);true 会立即关闭所有应用,未保存的工作将会丢失。
返回值
如果 Windows 接受了关机请求(之后将自行继续),则为 true;如果 Windows 拒绝了该请求,则为 false。
SystemSignOut
SystemSignOut(force: Bool) → Bool · 简单
将当前用户从 Windows 注销而不要求确认,同时关闭所有应用以及 Input.Observer。
参数
force: Bool— false 允许应用请求保存未保存的工作(只有无响应的应用才会被强制关闭);true 会立即关闭所有应用,未保存的工作将会丢失。
返回值
如果 Windows 接受了注销请求(之后将自行继续),则为 true;如果 Windows 拒绝了该请求,则为 false。
SystemSleep
SystemSleep() → Bool · 简单
使计算机进入睡眠状态而不进行询问。脚本在此处等待,并在计算机唤醒后继续运行。在支持新式待机的计算机上,此函数不执行任何操作;请改用 SystemMonitorOff。
参数
无参数。
返回值
计算机睡眠并唤醒后为 true;如果此计算机没有程序可以启动的睡眠状态,或 Windows 拒绝了请求,则为 false。
Timer
TimerCreate
TimerCreate(name: Text, startDelayMs: Integer, intervalMs: Integer, repeatCount: Integer, script: Text) → Bool
创建一个命名计时器,在延迟之后以固定间隔运行脚本文本;如果已有同名计时器,则替换它。脚本结束后计时器仍会继续运行,直到被删除或引擎退出。
参数
name: Text— 计时器的名称,供 TimerDelete 使用。区分大小写;具有此名称的现有计时器将被替换。startDelayMs: Integer— 首次运行前的延迟,以毫秒为单位;0 或更大。intervalMs: Integer— 两次运行之间的间隔,以毫秒为单位;1 或更大。一次运行不会等待上一次运行完成。repeatCount: Integer— 总共运行的次数;0 表示一直重复,直到计时器被删除。script: Text— 每次触发时运行的脚本文本。它独立运行,没有触发器上下文,也没有此脚本的任何变量。
返回值
计时器设置完成后为 true。startDelayMs 或 repeatCount 为负数,或 intervalMs 小于 1,都会使脚本因错误而停止。
2 个示例: 会计数的重复计时器, 来自代码片段的计时器脚本,无需转义
TimerDelete
TimerDelete(name: Text) → Bool
删除具有此名称的计时器,使其不再运行。
参数
name: Text— 计时器的名称,即传给 TimerCreate 的名称。区分大小写。
返回值
如果该计时器存在并已删除,则为 true;如果没有具有该名称的计时器,则为 false。
1 个示例: 列出并停止计时器
TimerDeleteAll
TimerDeleteAll() → Bool
删除用 TimerCreate 创建的所有计时器,使它们都不再运行。
参数
无参数。
返回值
始终为 true。
1 个示例: 列出并停止计时器
TimerEnumerateAll
TimerEnumerateAll() → Integer
获取所有当前计时器的名称列表,并返回其数量。使用 TimerGetEnumeratedNameAt 读取每个名称。
参数
无参数。
返回值
计时器的数量;如果没有,则为 0。
1 个示例: 列出并停止计时器
TimerGetEnumeratedNameAt
TimerGetEnumeratedNameAt(index: Integer) → Text
从本脚本中 TimerEnumerateAll 最近一次获取的列表中返回一个计时器名称。
参数
index: Integer— 在列表中从 0 开始的位置,范围为 0 到数量减 1。顺序没有意义。
返回值
计时器的名称;如果 index 超出范围或尚未调用 TimerEnumerateAll,则返回空文本。
1 个示例: 列出并停止计时器
Tray
TrayMinimizeWindow
TrayMinimizeWindow(window: Window) → Bool
隐藏窗口,并为其显示一个使用该窗口自身图标和标题的托盘图标。单击该图标可将窗口还原到原来的位置。对于控件,隐藏的是其顶级窗口。
参数
window: Window— 要隐藏的窗口,例如 ContextGetWindow()。
返回值
如果请求已被接受,则为 true;对于空窗口或已不存在的窗口,则为 false。
1 个示例: 将窗口隐藏到托盘
TrayRestoreAllWindows
TrayRestoreAllWindows() → Bool
还原用 TrayMinimizeWindow 隐藏的所有窗口,并删除它们的托盘图标。
参数
无参数。
返回值
如果已发送请求,则为 true;如果引擎尚未完成启动,则为 false。
UI
UIClearPrintLog
UIClearPrintLog() → Bool
清除诊断控制台的“用户”选项卡(UtilityPrint 的输出显示在此处),包括控制台关闭期间保存的输出。
参数
无参数。
返回值
始终为 true。
UICloseDisplayMessage
UICloseDisplayMessage(sessionId: Integer) → Bool
关闭由 UIShowDisplayMessage 打开的一条屏幕消息。如果该消息已关闭,则不执行任何操作。
参数
sessionId: Integer— UIShowDisplayMessage 为要关闭的消息返回的 ID。
返回值
始终为 true,包括消息已关闭的情况。
1 个示例: 实时更新的显示消息
UIGetCulture
UIGetCulture() → Text
返回 Input.Observer 自身文本(托盘菜单、消息、错误文本)所使用的语言和区域,由 UISetCulture、语言设置或 Windows 决定。
参数
无参数。
返回值
设置时使用的区域性名称,例如 en-US 或 es-ES,即使由另一地区的翻译代替显示也是如此。
UISetCulture
UISetCulture(culture: Text) → Bool
切换 Input.Observer 自身文本(托盘菜单、消息、错误文本)所使用的语言,直到程序退出或语言设置发生更改。不会更改设置窗口或已保存的设置。
参数
culture: Text— 区域性名称,例如 en-US、de-DE 或 es-MX。
返回值
如果已应用该区域性,则为 true;如果 culture 不是 Windows 认识的区域性,或 Input.Observer 没有该语言的翻译,则为 false,语言保持不变。已翻译语言的其他地区(例如 es-ES)也会被接受。
UIShowConsole
UIShowConsole() → Bool
打开诊断控制台(如果已打开,则将其置于前台),并等待其打开。如果配置受密码保护,则在要求输入密码期间等待。只有控制台自身的关闭按钮才能将其关闭。
参数
无参数。
返回值
控制台打开后为 true;如果未能打开(例如因为取消了密码提示或无法读取控制台保存的状态),则为 false。
UIShowDisplayMessage
UIShowDisplayMessage(title: Text, message: Text, durationMs: Integer, opacity: Real, location: Any, titleFontFamily: Text, titleFontSizePt: Integer, titleBold: Bool, titleItalic: Bool, messageFontFamily: Text, messageFontSizePt: Integer, messageBold: Bool, messageItalic: Bool, foreColor: Text, backColor: Text, paddingPx: Integer, usePrimaryScreen: Bool, titleAlign: Integer, messageAlign: Integer) → Integer · 简单
在屏幕上的固定位置显示一个带有标题行和消息行的面板,并立即返回。可以同时打开多个面板;请保留返回的 ID,以便更新或关闭此面板。
参数
title: Text— 顶行的文本,使用标题字体绘制。空文本表示省略该行。message: Text— 第二行的文本,使用消息字体绘制。长文本会换行到更多行。空文本表示省略该行。durationMs: Integer— 面板保持显示的时间,以毫秒为单位。0 或更小表示一直显示,直到 UICloseDisplayMessage 将其关闭(内置面板也可通过双击关闭)。opacity: Real— 面板的不透明程度,范围为 0.05(几乎不可见)到 1.0(完全不透明)。超出该范围的值会被限制在范围内。location: Any— 显示位置:一个 Location 常量,例如 Location.BottomCenter(放置在屏幕中未被任务栏覆盖的区域内);或者不含空格的 Text 'x,y',以屏幕像素给出面板左上角的位置,例如 '100,200'。任何其他内容都会使操作因错误而停止。titleFontFamily: Text— 标题行的字体名称,例如 Segoe UI。titleFontSizePt: Integer— 标题字号,以磅为单位。小于 1 的值按 1 计算。titleBold: Bool— true 表示以粗体绘制标题行。titleItalic: Bool— true 表示以斜体绘制标题行。messageFontFamily: Text— 消息行的字体名称,例如 Segoe UI。messageFontSizePt: Integer— 消息字号,以磅为单位。小于 1 的值按 1 计算。messageBold: Bool— true 表示以粗体绘制消息行。messageItalic: Bool— true 表示以斜体绘制消息行。foreColor: Text— 两行文本的颜色:颜色名称(例如 white 或 black)、'#RRGGBB',或者 'R,G,B'(每个数字为 0 到 255,且不含空格)。任何其他内容都会使操作因错误而停止。backColor: Text— 背景色,形式与 foreColor 相同,例如 '#F7F7F5'。若要使面板透明,请使用 opacity,而不是颜色。paddingPx: Integer— 文本周围的空白,以显示缩放比例为百分之一百时的像素为单位;会随显示缩放比例增大。小于 0 的值按 0 计算。usePrimaryScreen: Bool— true 表示将 Location 放在主显示器上;false 表示使用鼠标指针当前所在的显示器。对于 'x,y' 位置,此参数将被忽略。titleAlign: Integer— 标题行的对齐方式:TextAlign.Left、TextAlign.Center 或 TextAlign.Right。任何其他值都会使操作因错误而停止。messageAlign: Integer— 消息行的对齐方式:TextAlign.Left、TextAlign.Center 或 TextAlign.Right。任何其他值都会使操作因错误而停止。
返回值
消息的会话 ID,始终大于 0,供 UIUpdateDisplayMessage 和 UICloseDisplayMessage 使用。即使在设置中关闭了消息而不显示任何内容,也会返回 ID。
2 个示例: 调高音量并显示屏幕提示, 实时更新的显示消息
UIShowInputBox
UIShowInputBox(prompt: Text, title: Text, defaultText: Text) → Text · 简单
显示一个要求用户键入一行文本的对话框,带有“确定”和“取消”按钮。在对话框关闭之前阻塞脚本,然后将焦点还给原先具有焦点的窗口。
参数
prompt: Text— 显示在文本框上方的问题。超过 2000 个字符的文本会被截断。title: Text— 显示在对话框标题栏中的标题。defaultText: Text— 对话框打开时文本框中已有的文本,该文本处于选中状态,因此键入的内容会替换它。若要使文本框为空,请使用空文本。
返回值
用户单击“确定”时键入的文本(最多 4096 个字符);如果选择“取消”、按 Esc 或单击关闭按钮,则返回空文本。未键入内容就单击“确定”也会返回空文本。
UIShowMenu
UIShowMenu(items: Text) → Integer · 简单
在鼠标指针处显示一个弹出菜单,使一个手势或热键可以提供多个选项。在用户选择某项或关闭菜单之前阻塞脚本。
参数
items: Text— 菜单项,每行一项。仅包含 - 的行是分隔线;空行将被跳过。必须为 1 到 100 项,否则操作将因错误而停止;超过 260 个字符的项会被截断。在字母前加 & 可使其成为该项的快捷键;&& 显示为单个 &。
返回值
所选项从 0 开始的位置,仅计算菜单项(不计分隔线);如果菜单被关闭或无法显示,则为 -1。
1 个示例: 一个手势,多个选项
UIShowMessageBox
UIShowMessageBox(message: Text, title: Text, buttons: Text, icon: Text) → Text · 简单
在其他窗口前方显示一个标准的 Windows 消息框,并等待用户按下按钮。在消息框关闭之前阻塞脚本。
参数
message: Text— 消息框中显示的消息文本。title: Text— 显示在消息框标题栏中的标题。buttons: Text— 要显示的按钮,须完全按以下形式书写:OK、OKCancel、YesNo、YesNoCancel、RetryCancel 或 AbortRetryIgnore。任何其他内容都会使操作因错误而停止。icon: Text— 要显示的图标,须完全按以下形式书写:None、Information、Warning、Error 或 Question。任何其他内容都会使操作因错误而停止。
返回值
所按的按钮:OK、Cancel、Yes、No、Retry、Abort 或 Ignore(当有“取消”按钮时,按 Esc 或关闭按钮关闭消息框将返回 Cancel)。如果无法显示消息框,则返回空文本。
3 个示例: 读取用户键入的数字, 确认后按标题模式关闭窗口, 提出问题
UIShowSettings
UIShowSettings() → Bool · 简单
打开 Input.Observer 设置窗口;如果已打开,则将其置于前台。返回时不会等待窗口完成加载。
参数
无参数。
返回值
如果设置窗口已置于前台或已启动,则为 true;如果 Input.Observer.UI.exe 不存在、无法启动,或引擎未在 3 秒内响应,则为 false。
UIUpdateDisplayMessage
UIUpdateDisplayMessage(sessionId: Integer, title: Text, message: Text, durationMs: Integer, opacity: Real, location: Any, titleFontFamily: Text, titleFontSizePt: Integer, titleBold: Bool, titleItalic: Bool, messageFontFamily: Text, messageFontSizePt: Integer, messageBold: Bool, messageItalic: Bool, foreColor: Text, backColor: Text, paddingPx: Integer, usePrimaryScreen: Bool, titleAlign: Integer, messageAlign: Integer) → Bool
用新值替换已打开的 UIShowDisplayMessage 面板的所有内容(文本、位置、字体、颜色和持续时间)。持续时间从此次调用开始重新计算。
参数
sessionId: Integer— UIShowDisplayMessage 为要更改的消息返回的 ID。title: Text— 顶行的新文本,使用标题字体绘制。空文本表示省略该行。message: Text— 第二行的新文本,使用消息字体绘制。长文本会换行到更多行。空文本表示省略该行。durationMs: Integer— 面板从现在起保持显示的时间,以毫秒为单位。0 或更小表示一直显示,直到 UICloseDisplayMessage 将其关闭(内置面板也可通过双击关闭)。opacity: Real— 面板的不透明程度,范围为 0.05(几乎不可见)到 1.0(完全不透明)。超出该范围的值会被限制在范围内。location: Any— 显示位置:一个 Location 常量,例如 Location.BottomCenter(放置在屏幕中未被任务栏覆盖的区域内);或者不含空格的 Text 'x,y',以屏幕像素给出面板左上角的位置,例如 '100,200'。任何其他内容都会使操作因错误而停止。titleFontFamily: Text— 标题行的字体名称,例如 Segoe UI。titleFontSizePt: Integer— 标题字号,以磅为单位。小于 1 的值按 1 计算。titleBold: Bool— true 表示以粗体绘制标题行。titleItalic: Bool— true 表示以斜体绘制标题行。messageFontFamily: Text— 消息行的字体名称,例如 Segoe UI。messageFontSizePt: Integer— 消息字号,以磅为单位。小于 1 的值按 1 计算。messageBold: Bool— true 表示以粗体绘制消息行。messageItalic: Bool— true 表示以斜体绘制消息行。foreColor: Text— 两行文本的颜色:颜色名称(例如 white 或 black)、'#RRGGBB',或者 'R,G,B'(每个数字为 0 到 255,且不含空格)。任何其他内容都会使操作因错误而停止。backColor: Text— 背景色,形式与 foreColor 相同,例如 '#F7F7F5'。若要使面板透明,请使用 opacity,而不是颜色。paddingPx: Integer— 文本周围的空白,以显示缩放比例为百分之一百时的像素为单位;会随显示缩放比例增大。小于 0 的值按 0 计算。usePrimaryScreen: Bool— true 表示将 Location 放在主显示器上;false 表示使用鼠标指针当前所在的显示器。对于 'x,y' 位置,此参数将被忽略。titleAlign: Integer— 标题行的对齐方式:TextAlign.Left、TextAlign.Center 或 TextAlign.Right。任何其他值都会使操作因错误而停止。messageAlign: Integer— 消息行的对齐方式:TextAlign.Left、TextAlign.Center 或 TextAlign.Right。任何其他值都会使操作因错误而停止。
返回值
始终为 true,包括消息已关闭的情况(此时调用不执行任何操作)。
1 个示例: 实时更新的显示消息
Utility
UtilityGetTickCount
UtilityGetTickCount() → Integer
返回自 Windows 启动以来经过的毫秒数。将两次读数相减可测量经过的时间,例如用于检测重复触发。它不是时钟;若要获取一天中的时间,请使用 DateTimeGetNow。
参数
无参数。
返回值
自 Windows 启动以来经过的毫秒数,类型为 Integer。
UtilityLockAcquire
UtilityLockAcquire(name: Text, timeoutSeconds: Integer) → Integer
获取一个命名锁,使同一时间只有一个操作运行某段脚本。在锁空闲或 timeoutSeconds 用完之前阻塞脚本。脚本结束时会自动释放该锁。
参数
name: Text— 锁的名称,1 到 255 个字符,由所有操作共享;不区分大小写。允许再次获取此脚本已持有的锁,但需要多调用一次 UtilityLockRelease。timeoutSeconds: Integer— 最长等待时间,以秒为单位。0 或超过 24 天的值表示一直等到锁空闲或操作被停止。负值会使操作因错误而停止。
返回值
LockResult.Acquired、LockResult.TimedOut(在等待期间操作被停止时也返回此值),或者如果锁已被固定,则立即返回 LockResult.Pinned。
1 个示例: 每次只让一个操作运行某段代码
UtilityLockAcquirePinned
UtilityLockAcquirePinned(name: Text, timeoutSeconds: Integer) → Integer
获取一个命名锁并将其固定,使其在脚本结束后仍保持被占用状态。只有同一次脚本运行中的 UtilityLockRelease 或重新加载配置才能释放它。阻塞方式与 UtilityLockAcquire 相同。
参数
name: Text— 锁的名称,1 到 255 个字符,由所有操作共享;不区分大小写。此脚本已持有的锁会变为固定状态。timeoutSeconds: Integer— 最长等待时间,以秒为单位。0 或超过 24 天的值表示一直等到锁空闲或操作被停止。负值会使操作因错误而停止。
返回值
LockResult.Acquired、LockResult.TimedOut(在等待期间操作被停止时也返回此值),或者如果锁已被固定,则立即返回 LockResult.Pinned。
UtilityLockGetState
UtilityLockGetState(name: Text) → Integer
报告命名锁是空闲、由此脚本持有、由其他操作持有,还是已被固定。从不等待。
参数
name: Text— 锁的名称,1 到 255 个字符;不区分大小写。
返回值
LockState.Free、LockState.HeldByMe、LockState.HeldByOther 或 LockState.Pinned。已固定的锁即使对固定它的脚本也报告 LockState.Pinned。
UtilityLockRelease
UtilityLockRelease(name: Text) → Bool
释放此脚本持有的命名锁,或取消其固定。被多次获取的锁需要相同次数的释放后才会空闲。
参数
name: Text— 锁的名称,1 到 255 个字符;不区分大小写。
返回值
如果此脚本持有该锁,则为 true;如果没有人持有该锁或由其他操作持有,则为 false,且不执行任何操作。
1 个示例: 每次只让一个操作运行某段代码
UtilityPrint
UtilityPrint(text: Text) → Bool
将一行文本写入诊断控制台的“用户”部分;如果脚本从“脚本”部分运行,则写入该部分的输出。控制台关闭期间打印的行会在下次打开控制台时显示。
参数
text: Text— 要写入的文本。请先用 StringFormat 或 StringFromNumber 将数字转换为 Text。
返回值
始终为 true。
70 个示例: 你好,控制台, 五种值类型, 每种类型的真值, else-if 链, 计数循环:递增、递减和按步长, 嵌套循环:乘法表, while 循环:等待窗口出现,带超时, 带退出标志的 while (true), break 和 continue, 意外的优先级, && 和 || 会对两侧都求值, 不同类型之间的相等比较, 混合类型算术回退为 0, 注释、空语句和块, Integer 与 Real 除法,以及除以零, 不用 % 求余数, 舍入和 Real 数学内置函数, 将值限制在范围内, 随机数和抛硬币, 手势笔画的长度, 格式化 Real 而不显示六位小数, 标志掩码:设置、清除、切换、测试, 读取光标下的像素颜色, Integer 转十六进制文本, 统计置位的位数, 移位的边界情况, 交换两个 Integer, 按键状态位, 字符串转义序列和 Windows 路径, 格式化两个以上的值, 拆分并遍历, 嵌套拆分:key=value 键值对, 最后一次出现的位置:文件扩展名, 读取用户键入的数字, 启动程序、等待其窗口出现并对其操作, 用正则表达式从复制的文本中提取值, 数字补零, 反转 Text, 统计剪贴板中的单词数, 不区分大小写的比较, Text 排序按序数进行, 今天的日期,以及带时间戳的文件名, 命名常量与原始数字, 列出可见的顶层窗口, 最小化某个应用的所有窗口, 检查窗口的子控件, 从进程到窗口, 描述光标下方的内容, 触发上下文知道的一切, 笔画朝哪个方向?, 按笔画按钮分支, 将复制的图像保存到文件, 读取文件并统计行数, 统计文件夹中的文件类型, 监视文件夹, 会计数的重复计时器, 列出并停止计时器, 重启后仍保留的计数器, 保存在 Storage 中的列表, 每次只让一个操作运行某段代码, 提出问题, 展开环境变量, 交给 AutoHotkey 处理, 列出显示器, 引擎状态, 将代码片段用作可重用函数, 与插件通信, 向串口设备提问, 列出 COM 端口, 保持 Arduino 的端口打开并向其发送命令
UtilityWait
UtilityWait(milliseconds: Integer) → Bool · 简单
将脚本暂停若干毫秒,例如让窗口或剪贴板有时间跟上。如果操作被停止,等待会提前结束。
参数
milliseconds: Integer— 等待时间,以毫秒为单位,范围为 0 到 60000(一分钟)。更大的值等待一分钟;负值不等待。
返回值
始终为 true。
10 个示例: while 循环:等待窗口出现,带超时, 让鼠标沿圆周移动, 填充模板并粘贴, 点击某处,然后将光标放回原处, 脚本化拖动, 将光标限制在窗口内 5 秒, 媒体键, 将所选文本转为大写, 在网上搜索所选内容, 实时更新的显示消息
Window
WindowCenterToScreen
WindowCenterToScreen(window: Window) → Bool · 简单
移动窗口,使其在所在显示器的工作区(屏幕减去任务栏)中居中,并保持其大小不变。
参数
window: Window— 要居中的窗口。
返回值
如果窗口已移动,则为 true;如果窗口为空或已关闭,或拒绝移动,则为 false。
2 个示例: while 循环:等待窗口出现,带超时, 记住并还原窗口位置
WindowClipToScreen
WindowClipToScreen(window: Window) → Bool
缩小并移动窗口,幅度恰好使其任何边缘都不超出所在显示器的工作区(屏幕减去任务栏)。完全位于工作区之外的窗口会先以当前大小移到工作区内。
参数
window: Window— 要限制在工作区内的窗口。
返回值
如果窗口已放置到位(包括原本就在工作区内的情况),则为 true;如果窗口为空或已关闭,或拒绝更改,则为 false。
WindowClose
WindowClose(window: Window) → Bool · 简单
请求窗口关闭,如同用户单击了其关闭按钮。程序可能会要求保存更改或拒绝关闭;若要等待窗口消失,请使用 WindowWaitClose。
参数
window: Window— 要关闭的窗口。
返回值
如果已发送关闭请求,则为 true,但这并不表示窗口已关闭;如果窗口为空或已关闭,或属于以更高权限(例如以管理员身份)运行的程序,则为 false。
3 个示例: 确认后按标题模式关闭窗口, 按笔画按钮分支, 按住 Ctrl 时改变行为
WindowContainsTitle
WindowContainsTitle(window: Window, text: Text) → Bool
检查窗口标题是否包含某段文本,不区分大小写。
参数
window: Window— 要检查其标题的窗口。text: Text— 要在标题中任意位置查找的文本。不区分大小写。
返回值
如果标题包含 text,则为 true,text 为空时始终为 true;否则为 false,包括空窗口或已关闭窗口的情况。
WindowControlFromPoint
WindowControlFromPoint(x: Integer, y: Integer) → Window
返回某个屏幕点处最内层的窗口,例如程序窗口内的按钮、文本框或其他控件。隐藏和禁用的窗口将被跳过。
参数
x: Integer— 水平屏幕位置,以虚拟屏幕像素为单位。y: Integer— 垂直屏幕位置,以虚拟屏幕像素为单位。
返回值
该点下方的控件或窗口;如果没有,则返回空窗口。
1 个示例: 描述光标下方的内容
WindowEnsureVisible
WindowEnsureVisible(window: Window) → Bool
将窗口完全滑入其所在显示器的工作区,而不调整其大小。大于工作区的窗口会与工作区的左上角对齐。
参数
window: Window— 要完全移入屏幕的窗口。
返回值
如果窗口已放置到位(包括原本就完全可见的情况),则为 true;如果窗口为空或已关闭,或拒绝移动,则为 false。
WindowFindAllByModuleRegex
WindowFindAllByModuleRegex(pattern: Text) → Integer
查找程序文件路径与正则表达式匹配的所有顶级窗口(包括隐藏的窗口),并保留该列表供 WindowGetEnumeratedAt 使用。会替换之前的任何窗口列表。
参数
pattern: Text— 一个正则表达式,不区分大小写,与拥有每个窗口的程序的完整路径进行匹配,例如 'notepad[.]exe$'。
返回值
匹配的窗口数;如果没有匹配项,则为 0。无效的模式会使操作因错误而停止。
1 个示例: 最小化某个应用的所有窗口
WindowFindAllByTitleRegex
WindowFindAllByTitleRegex(pattern: Text) → Integer
查找标题与正则表达式匹配的所有顶级窗口(包括隐藏的窗口),并保留该列表供 WindowGetEnumeratedAt 使用。会替换之前的任何窗口列表。
参数
pattern: Text— 一个正则表达式,不区分大小写,与每个窗口的标题进行匹配。除非用 ^ 或 $ 锚定,否则可匹配标题中的任意位置。
返回值
匹配的窗口数;如果没有匹配项,则为 0。无效的模式会使操作因错误而停止。
1 个示例: 确认后按标题模式关闭窗口
WindowFindByClassName
WindowFindByClassName(className: Text) → Window
查找类名包含给定文本的最前面的可见顶级窗口,不区分大小写。
参数
className: Text— 要在类名中查找的文本,例如 'Notepad'。名称的一部分即可匹配;空文本匹配最前面的可见窗口。
返回值
找到的窗口;如果没有匹配的可见顶级窗口,则返回空窗口。
WindowFindByTitle
WindowFindByTitle(title: Text) → Window
查找标题包含给定文本的最前面的可见顶级窗口,不区分大小写。
参数
title: Text— 要在标题中任意位置查找的文本。不区分大小写;空文本匹配最前面的可见窗口。
返回值
找到的窗口;如果没有匹配的可见顶级窗口,则返回空窗口。
4 个示例: 每种类型的真值, while 循环:等待窗口出现,带超时, 不同类型之间的相等比较, 点击窗口内的某个点
WindowFitToScreen
WindowFitToScreen(window: Window) → Bool · 简单
调整窗口大小并移动窗口,使其可见边缘填满所在显示器的工作区(屏幕减去任务栏),但不将其最大化。
参数
window: Window— 要适应工作区的窗口。
返回值
如果已调整窗口大小,则为 true;如果窗口为空或已关闭,或拒绝更改,则为 false。
WindowFromPoint
WindowFromPoint(x: Integer, y: Integer) → Window
返回某个屏幕点处的顶级窗口,例如鼠标下方的程序窗口,而不是其中的控件。
参数
x: Integer— 水平屏幕位置,以虚拟屏幕像素为单位。y: Integer— 垂直屏幕位置,以虚拟屏幕像素为单位。
返回值
该点下方的顶级窗口;如果没有,则返回空窗口。
WindowFromProcessId
WindowFromProcessId(processId: Integer) → Window
返回正在运行的程序的主窗口:该进程拥有的最前面的可见顶级窗口。
参数
processId: Integer— 进程 ID,由 WindowGetProcessId 或 ShellGetEnumeratedProcessIdAt 返回。
返回值
该窗口;如果该进程没有可见的顶级窗口或 processId 为 0,则返回空窗口。
1 个示例: 从进程到窗口
WindowGetActive
WindowGetActive() → Window
返回前台窗口:用户当前正在使用的顶级窗口。
参数
无参数。
返回值
活动窗口;如果此刻没有活动窗口(例如焦点正在切换时),则返回空窗口。
4 个示例: 五种值类型, 格式化两个以上的值, 不区分大小写的比较, 将活动窗口贴靠到其所在显示器的左半边
WindowGetAllChildren
WindowGetAllChildren(window: Window, directOnly: Bool) → Integer
列出窗口内的子窗口(控件),并保留该列表供 WindowGetEnumeratedAt 使用。会替换之前的任何窗口列表。
参数
window: Window— 要列出其子窗口的窗口。directOnly: Bool— true 表示仅列出该窗口的直接子窗口;false 表示列出所有层级的全部后代窗口。
返回值
找到的子窗口数;如果没有子窗口或窗口为空,则为 0。
1 个示例: 检查窗口的子控件
WindowGetAllProps
WindowGetAllProps(window: Window) → Integer
列出窗口上存储的每个属性(无论由此引擎、程序自身还是其他软件存储),并保留该列表供 WindowGetEnumeratedPropNameAt 和 WindowGetEnumeratedPropValueAt 使用。
参数
window: Window— 要列出其属性的窗口。
返回值
找到的属性数;如果没有属性或窗口为空,则为 0。
WindowGetAllTopLevel
WindowGetAllTopLevel() → Integer
按从前到后的顺序列出桌面上的所有顶级窗口(包括隐藏的窗口和隐形 (cloaked) 窗口),并保留该列表供 WindowGetEnumeratedAt 使用。会替换之前的任何窗口列表。
参数
无参数。
返回值
找到的顶级窗口数。
1 个示例: 列出可见的顶层窗口
WindowGetAlpha
WindowGetAlpha(window: Window) → Integer
返回窗口的透明度级别,由 WindowSetAlpha 或程序自身设置。
参数
window: Window— 要读取的窗口。
返回值
介于 0(完全透明)到 255(完全不透明)之间的值。对于未设置透明度的窗口,以及空窗口或已关闭的窗口,为 255。
1 个示例: 循环切换窗口透明度
WindowGetClassName
WindowGetClassName(window: Window) → Text
返回窗口的类名,即 Windows 为其使用的类型名称,例如 'Notepad' 或 'Button'。可用于识别标题会变化的窗口。
参数
window: Window— 要读取的窗口。
返回值
类名;如果窗口为空或已关闭,则返回空文本。
WindowGetControlText
WindowGetControlText(window: Window) → Text
读取任意程序中控件的文本,例如文本框、状态栏或对话框消息。仅适用于经典 Windows 控件。如果程序没有响应,最多阻塞脚本 2 秒。
参数
window: Window— 要读取的控件或窗口,例如来自 WindowControlFromPoint 或 WindowGetEnumeratedAt。
返回值
控件的文本,最多约一百万个字符;如果控件没有文本、窗口为空或已关闭,或程序没有响应,则返回空文本。其他程序的密码框返回空文本。
WindowGetDpi
WindowGetDpi(window: Window) → Integer
返回窗口所在显示器的 DPI:显示缩放比例为百分之一百时为 96,百分之一百五十时为 144。
参数
window: Window— 要检查的窗口。
返回值
DPI;如果窗口为空或已关闭,则为 0。
WindowGetEnabled
WindowGetEnabled(window: Window) → Bool
检查窗口是否接受鼠标和键盘输入。已禁用的窗口或控件通常显示为灰色。
参数
window: Window— 要检查的窗口。
返回值
如果窗口已启用,则为 true;如果已禁用、为空或已关闭,则为 false。
WindowGetEnumeratedAt
WindowGetEnumeratedAt(index: Integer) → Window
从最近一次 WindowGetAllTopLevel、WindowGetAllChildren、WindowFindAllByTitleRegex 或 WindowFindAllByModuleRegex 调用生成的列表中返回一个窗口。
参数
index: Integer— 在列表中的位置,范围为 0 到生成列表的调用所返回的数量减 1。
返回值
该位置上的窗口;如果 index 超出范围,则返回空窗口。
4 个示例: 列出可见的顶层窗口, 最小化某个应用的所有窗口, 确认后按标题模式关闭窗口, 检查窗口的子控件
WindowGetEnumeratedPropNameAt
WindowGetEnumeratedPropNameAt(index: Integer) → Text
从最近一次 WindowGetAllProps 调用生成的列表中返回一个属性的名称。
参数
index: Integer— 在列表中的位置,范围为 0 到 WindowGetAllProps 返回的数量减 1。
返回值
属性名称;如果 index 超出范围,则返回空文本。
WindowGetEnumeratedPropValueAt
WindowGetEnumeratedPropValueAt(index: Integer) → Integer
从最近一次 WindowGetAllProps 调用生成的列表中返回一个属性的原始整数值。用 WindowSetPropertyText 设置的属性在此处显示为一个内部数字,而不是其文本。
参数
index: Integer— 在列表中的位置,范围为 0 到 WindowGetAllProps 返回的数量减 1。
返回值
属性的值;如果 index 超出范围,则为 0。
WindowGetExecutableFolder
WindowGetExecutableFolder(window: Window) → Text
返回包含拥有窗口的程序的文件夹,不含文件名,末尾也不带分隔符。若要获取文件名,请使用 WindowGetExecutableName;若要同时获取两者,请使用 WindowGetExecutableFullPath。
参数
window: Window— 要定位其程序的窗口。
返回值
文件夹路径;如果窗口为空或已关闭,或无法查询该程序,则返回空文本。
WindowGetExecutableFullPath
WindowGetExecutableFullPath(window: Window) → Text
返回拥有窗口的程序的完整路径,即文件夹和文件名合在一起,例如 Windows 文件夹中 notepad.exe 的路径。若只需其中一部分,请使用 WindowGetExecutableFolder 或 WindowGetExecutableName。
参数
window: Window— 要定位其程序的窗口。
返回值
完整路径;如果窗口为空或已关闭,或无法查询该程序,则返回空文本。
WindowGetExecutableName
WindowGetExecutableName(window: Window) → Text
返回拥有窗口的程序的文件名,例如 'notepad.exe'。
参数
window: Window— 要识别其程序的窗口。
返回值
程序的文件名;如果窗口为空或已关闭,或无法查询该程序,则返回空文本。
WindowGetHeight
WindowGetHeight(window: Window) → Integer
返回窗口的可见高度,不包括 Windows 在大多数窗口周围添加的不可见调整大小边框。
参数
window: Window— 要测量的窗口。
返回值
以像素为单位的高度;如果窗口为空或已关闭,则为 0。
3 个示例: 格式化两个以上的值, 将活动窗口贴靠到其所在显示器的左半边, 将光标限制在窗口内 5 秒
WindowGetLastFocus
WindowGetLastFocus() → Window
返回桌面上最近一次获得键盘焦点的窗口或控件。通常是文本框之类的控件,而不是其顶级窗口。
参数
无参数。
返回值
最近一次具有焦点的窗口或控件;如果自引擎启动以来焦点未发生变化,则返回空窗口。
WindowGetMovableAncestor
WindowGetMovableAncestor(window: Window) → Window
返回最近的可拖动窗口:窗口本身,或其上方第一个具有系统菜单的父窗口。可将鼠标下方的控件转换为要移动的窗口。
参数
window: Window— 作为起点的窗口或控件。
返回值
窗口本身或第一个具有系统菜单的父窗口;如果都没有系统菜单或窗口为空,则返回空窗口。
WindowGetParent
WindowGetParent(window: Window) → Window
返回包含控件的窗口。对于对话框之类的弹出窗口,这可能是拥有它的窗口。
参数
window: Window— 要获取其父窗口的窗口或控件。
返回值
父窗口或所有者窗口;如果没有,或窗口为空或已关闭,则返回空窗口。
WindowGetProcessId
WindowGetProcessId(window: Window) → Integer
返回拥有窗口的进程(正在运行的程序)的 ID,与任务管理器中显示的数字相同。
参数
window: Window— 要识别其进程的窗口。
返回值
进程 ID;如果窗口为空或已关闭,则为 0。
WindowGetPropertyInteger
WindowGetPropertyInteger(window: Window, name: Text) → Integer
读取存储在窗口上的命名整数,例如之前用 WindowSetPropertyInteger 存储、用于记住该窗口某些信息的整数。
参数
window: Window— 要从中读取的窗口。name: Text— 属性名称。
返回值
存储的值;如果该属性不存在或窗口为空,则为 0。存储的 0 与缺失的属性看起来相同。
WindowGetPropertyText
WindowGetPropertyText(window: Window, name: Text) → Text
读取本引擎用 WindowSetPropertyText 存储在窗口上的命名文本值。
参数
window: Window— 要从中读取的窗口。name: Text— 属性名称。
返回值
存储的文本;如果该属性不存在、不是由本引擎以文本形式存储的、之后已被覆盖,或窗口为空,则返回空文本。
WindowGetRoot
WindowGetRoot(window: Window) → Window
返回包含某个窗口或控件的顶级窗口,例如按钮所在的程序窗口。
参数
window: Window— 作为起点的窗口或控件。
返回值
顶级窗口;如果该窗口本身已是顶级窗口,则为其本身;如果窗口为空或已关闭,则返回空窗口。
1 个示例: 描述光标下方的内容
WindowGetTitle
WindowGetTitle(window: Window) → Text
返回窗口标题栏中的文本。对于其他程序中的控件,此值通常为空;对于这些控件,请使用 WindowGetControlText。
参数
window: Window— 要读取的窗口。
返回值
标题;如果窗口没有标题、为空或已关闭,则返回空文本。
9 个示例: 不区分大小写的比较, 一个手势,多个选项, 将窗口置顶, 列出可见的顶层窗口, 检查窗口的子控件, 从进程到窗口, 描述光标下方的内容, 触发上下文知道的一切, 保存在 Storage 中的列表
WindowGetVisible
WindowGetVisible(window: Window) → Bool
检查窗口是否设置为显示。可见的窗口仍可能处于最小化状态、被其他窗口遮挡、位于屏幕之外或位于另一个虚拟桌面上。
参数
window: Window— 要检查的窗口。
返回值
如果窗口及其所有父窗口都处于显示状态,则为 true;如果窗口已隐藏、为空或已关闭,则为 false。
1 个示例: 列出可见的顶层窗口
WindowGetWidth
WindowGetWidth(window: Window) → Integer
返回窗口的可见宽度,不包括 Windows 在大多数窗口周围添加的不可见调整大小边框。
参数
window: Window— 要测量的窗口。
返回值
以像素为单位的宽度;如果窗口为空或已关闭,则为 0。
3 个示例: 格式化两个以上的值, 将活动窗口贴靠到其所在显示器的左半边, 将光标限制在窗口内 5 秒
WindowGetX
WindowGetX(window: Window) → Integer
返回窗口可见左边缘的屏幕位置,不包括不可见的调整大小边框。对于最小化的窗口,这是一个位于屏幕之外的停放位置。
参数
window: Window— 要定位的窗口。
返回值
左边缘,以虚拟屏幕像素为单位;如果窗口为空或已关闭,则为 0。
4 个示例: 格式化两个以上的值, 将活动窗口贴靠到其所在显示器的左半边, 记住并还原窗口位置, 将光标限制在窗口内 5 秒
WindowGetY
WindowGetY(window: Window) → Integer
返回窗口可见上边缘的屏幕位置,不包括不可见的调整大小边框。对于最小化的窗口,这是一个位于屏幕之外的停放位置。
参数
window: Window— 要定位的窗口。
返回值
上边缘,以虚拟屏幕像素为单位;如果窗口为空或已关闭,则为 0。
4 个示例: 格式化两个以上的值, 将活动窗口贴靠到其所在显示器的左半边, 记住并还原窗口位置, 将光标限制在窗口内 5 秒
WindowHide
WindowHide(window: Window) → Bool
完全隐藏窗口,包括其任务栏按钮。引擎退出时会重新显示该窗口,并且随时可以通过托盘菜单中的“显示隐藏的窗口”将其恢复。
参数
window: Window— 要隐藏的窗口。
返回值
如果窗口已隐藏或原本就处于隐藏状态,则为 true;如果窗口为空或已关闭,是桌面、任务栏或此引擎自身的窗口之一,或已跟踪 256 个隐藏窗口,则为 false。
WindowIsCloaked
WindowIsCloaked(window: Window) → Bool
检查 Windows 是否让某个窗口保持不可见,尽管它被视为处于显示状态,例如位于另一个虚拟桌面上的窗口或已挂起的 Store 应用。可用于在列表中跳过此类窗口。
参数
window: Window— 要检查的窗口。
返回值
如果窗口处于隐形 (cloaked) 状态,则为 true;如果不是,或窗口为空或已关闭,则为 false。
1 个示例: 列出可见的顶层窗口
WindowIsMaximized
WindowIsMaximized(window: Window) → Bool
检查窗口是否已最大化,例如在决定是否调用 WindowRestore 或 WindowMaximize 之前。
参数
window: Window— 要检查的窗口。
返回值
如果窗口已最大化,则为 true;如果未最大化,或窗口为空或已关闭,则为 false。
1 个示例: 切换手势所在窗口的最大化状态
WindowIsMinimized
WindowIsMinimized(window: Window) → Bool
检查窗口是否已最小化到任务栏,例如在决定是否调用 WindowRestore 之前。
参数
window: Window— 要检查的窗口。
返回值
如果窗口已最小化,则为 true;如果未最小化,或窗口为空或已关闭,则为 false。
WindowMapClientPointToScreenX
WindowMapClientPointToScreenX(window: Window, x: Integer, y: Integer) → Integer
将窗口工作区(窗口内部、标题栏下方且在边框之内的区域)中的点转换为屏幕位置,并返回其水平分量。
参数
window: Window— 该点所在工作区所属的窗口。x: Integer— 距工作区左边缘的水平位置,以像素为单位。y: Integer— 距工作区上边缘的垂直位置,以像素为单位。
返回值
屏幕 X 位置,以虚拟屏幕像素为单位;如果窗口为空或已关闭,则为 0。
WindowMapClientPointToScreenY
WindowMapClientPointToScreenY(window: Window, x: Integer, y: Integer) → Integer
将窗口工作区(窗口内部、标题栏下方且在边框之内的区域)中的点转换为屏幕位置,并返回其垂直分量。
参数
window: Window— 该点所在工作区所属的窗口。x: Integer— 距工作区左边缘的水平位置,以像素为单位。y: Integer— 距工作区上边缘的垂直位置,以像素为单位。
返回值
屏幕 Y 位置,以虚拟屏幕像素为单位;如果窗口为空或已关闭,则为 0。
WindowMapScreenPointToClientX
WindowMapScreenPointToClientX(window: Window, x: Integer, y: Integer) → Integer
将屏幕位置转换为相对于窗口工作区(窗口内部、标题栏下方且在边框之内的区域)的点,并返回其水平分量。
参数
window: Window— 作为测量基准的工作区所属的窗口。x: Integer— 水平屏幕位置,以虚拟屏幕像素为单位。y: Integer— 垂直屏幕位置,以虚拟屏幕像素为单位。
返回值
距工作区左边缘的 X 位置,以像素为单位;如果该点位于其左侧,则为负数。如果窗口为空或已关闭,则为 0。
1 个示例: 描述光标下方的内容
WindowMapScreenPointToClientY
WindowMapScreenPointToClientY(window: Window, x: Integer, y: Integer) → Integer
将屏幕位置转换为相对于窗口工作区(窗口内部、标题栏下方且在边框之内的区域)的点,并返回其垂直分量。
参数
window: Window— 作为测量基准的工作区所属的窗口。x: Integer— 水平屏幕位置,以虚拟屏幕像素为单位。y: Integer— 垂直屏幕位置,以虚拟屏幕像素为单位。
返回值
距工作区上边缘的 Y 位置,以像素为单位;如果该点位于其上方,则为负数。如果窗口为空或已关闭,则为 0。
1 个示例: 描述光标下方的内容
WindowMaximize
WindowMaximize(window: Window) → Bool · 简单
最大化窗口,使其填满所在的显示器,并激活该窗口。用 WindowHide 隐藏的窗口会被显示,且不再作为隐藏窗口跟踪。
参数
window: Window— 要最大化的窗口。
返回值
如果调用后窗口处于最大化状态,则为 true;如果窗口为空或已关闭,或未能最大化,则为 false。
2 个示例: 一个手势,多个选项, 切换手势所在窗口的最大化状态
WindowMinimize
WindowMinimize(window: Window) → Bool · 简单
将窗口最小化到任务栏。随后 Windows 会激活下一个窗口。用 WindowHide 隐藏的窗口会以最小化状态显示,且不再作为隐藏窗口跟踪。
参数
window: Window— 要最小化的窗口。
返回值
如果调用后窗口处于最小化状态,则为 true;如果窗口为空或已关闭,或未能最小化,则为 false。
4 个示例: 一个手势,多个选项, 最小化某个应用的所有窗口, 按笔画按钮分支, 按住 Ctrl 时改变行为
WindowMoveTo
WindowMoveTo(window: Window, x: Integer, y: Integer) → Bool
移动窗口,使其可见左上角位于某个屏幕位置,并保持其大小不变。使用与 WindowGetX 和 WindowGetY 相同的坐标;最大化的窗口不会先被还原。
参数
window: Window— 要移动的窗口。x: Integer— 可见框架的新左边缘,以虚拟屏幕像素为单位。y: Integer— 可见框架的新上边缘,以虚拟屏幕像素为单位。
返回值
如果窗口已移动,则为 true;如果窗口为空或已关闭,或拒绝移动,则为 false。
3 个示例: 将活动窗口贴靠到其所在显示器的左半边, 将窗口贴靠到光标下方的 3×2 网格单元格中, 记住并还原窗口位置
WindowRemoveProp
WindowRemoveProp(window: Window, name: Text) → Integer
从窗口中删除一个命名属性,无论它是用 WindowSetPropertyInteger、WindowSetPropertyText 还是由其他软件存储的。
参数
window: Window— 要从中删除属性的窗口。name: Text— 属性名称。
返回值
已删除属性的原始值;如果该属性不存在或窗口为空,则为 0。对于文本属性,这是一个内部数字,而不是文本。
WindowResizeTo
WindowResizeTo(window: Window, width: Integer, height: Integer) → Bool
调整窗口可见框架的大小,并保持其左上角位置不变。使用与 WindowGetWidth 和 WindowGetHeight 相同的大小;最大化的窗口不会先被还原。
参数
window: Window— 要调整大小的窗口。width: Integer— 新的可见宽度,以像素为单位。height: Integer— 新的可见高度,以像素为单位。
返回值
如果已调整窗口大小,则为 true;如果窗口为空或已关闭,或拒绝更改,则为 false。
2 个示例: 将活动窗口贴靠到其所在显示器的左半边, 将窗口贴靠到光标下方的 3×2 网格单元格中
WindowRestore
WindowRestore(window: Window) → Bool · 简单
将最小化或最大化的窗口恢复为正常大小和位置,并激活该窗口。用 WindowHide 隐藏的窗口会被显示,且不再作为隐藏窗口跟踪。
参数
window: Window— 要还原的窗口。
返回值
如果窗口最终处于正常大小(既未最小化也未最大化),则为 true;如果窗口为空或已关闭,或未能达到该状态,则为 false。之前为最大化状态的最小化窗口会恢复为最大化,这算作 false。
3 个示例: 切换手势所在窗口的最大化状态, 将活动窗口贴靠到其所在显示器的左半边, 将窗口贴靠到光标下方的 3×2 网格单元格中
WindowSendToBottom
WindowSendToBottom(window: Window) → Bool · 简单
将窗口移到所有其他窗口的后面,而不激活它。原本始终置顶的窗口会失去该设置。
参数
window: Window— 要移到最后面的窗口。
返回值
如果窗口已移到最后面,则为 true;如果窗口为空或已关闭,或拒绝更改,则为 false。
WindowSendToMonitorAt
WindowSendToMonitorAt(window: Window, x: Integer, y: Integer, mouseFollows: Bool) → Bool
将窗口移动到包含某个屏幕点的显示器上,保持其大小及其相对于工作区的位置不变。最大化的窗口在新显示器上仍为最大化状态;如果这会激活该窗口,则在 Windows 允许时,之前处于活动状态的窗口会重新获得焦点。
参数
window: Window— 要移动的窗口。x: Integer— 目标显示器上任意一点的水平位置,以虚拟屏幕像素为单位。不在任何显示器上的点会选择最近的显示器。y: Integer— 目标显示器上任意一点的垂直位置,以虚拟屏幕像素为单位。mouseFollows: Bool— true 表示在窗口移动时将鼠标指针移动到新显示器上相同的相对位置;false 表示保持鼠标指针不动。
返回值
如果窗口已移动,则为 true;如果窗口为空或已关闭,或拒绝移动,则为 false。
WindowSendToMonitorIndex
WindowSendToMonitorIndex(window: Window, index: Integer, mouseFollows: Bool) → Bool
将窗口移动到按其在最近一次 DisplayMonitorEnumeratedAll 调用所得列表中的位置选择的显示器上,保持其大小和相对位置不变。最大化的窗口保持最大化状态;如果再次最大化会激活该窗口,则在 Windows 允许时,之前处于活动状态的窗口会重新获得焦点。
参数
window: Window— 要移动的窗口。index: Integer— 在显示器列表中的位置,从 0 开始。显示器按从左到右、再从上到下的顺序排列。mouseFollows: Bool— true 表示在窗口移动时将鼠标指针移动到新显示器上相同的相对位置;false 表示保持鼠标指针不动。
返回值
如果窗口已移动,则为 true;如果窗口为空或已关闭、index 超出范围或本脚本中尚未运行 DisplayMonitorEnumeratedAll,或窗口拒绝移动,则为 false。
1 个示例: 将窗口发送到指定的显示器
WindowSendToMonitorName
WindowSendToMonitorName(window: Window, name: Text, mouseFollows: Bool) → Bool
将窗口移动到具有给定设备路径或友好名称的显示器上,保持其大小和相对位置不变。最大化的窗口保持最大化状态;如果再次最大化会激活该窗口,则在 Windows 允许时,之前处于活动状态的窗口会重新获得焦点。适用于在连接和断开扩展坞后仍能保持的布局。
参数
window: Window— 要移动的窗口。name: Text— 显示器的设备路径或友好名称,由 DisplayMonitorGetDevicePathFromPoint 或 DisplayMonitorGetFriendlyNameFromPoint 返回。设备路径是可靠的选择。不区分大小写。mouseFollows: Bool— true 表示在窗口移动时将鼠标指针移动到新显示器上相同的相对位置;false 表示保持鼠标指针不动。
返回值
如果窗口已移动,则为 true;如果没有已连接的显示器具有该名称、窗口为空或已关闭,或窗口拒绝移动,则为 false。
WindowSendToNextScreen
WindowSendToNextScreen(window: Window, mouseFollows: Bool) → Bool · 简单
将窗口移动到下一个显示器,按从左到右、再从上到下的顺序,并从最后一个回到第一个,保持其大小和相对位置不变。最大化的窗口保持最大化状态;如果再次最大化会激活该窗口,则在 Windows 允许时,之前处于活动状态的窗口会重新获得焦点。
参数
window: Window— 要移动的窗口。mouseFollows: Bool— true 表示在窗口移动时将鼠标指针移动到新显示器上相同的相对位置;false 表示保持鼠标指针不动。
返回值
如果窗口已移动(包括只有一个显示器的情况),则为 true;如果窗口为空或已关闭,或拒绝移动,则为 false。
2 个示例: 将窗口移到下一个显示器, 将窗口发送到指定的显示器
WindowSendToPreviousScreen
WindowSendToPreviousScreen(window: Window, mouseFollows: Bool) → Bool · 简单
将窗口移动到上一个显示器,按从右到左、再从下到上的顺序,并从第一个回到最后一个,保持其大小和相对位置不变。最大化的窗口保持最大化状态;如果再次最大化会激活该窗口,则在 Windows 允许时,之前处于活动状态的窗口会重新获得焦点。
参数
window: Window— 要移动的窗口。mouseFollows: Bool— true 表示在窗口移动时将鼠标指针移动到新显示器上相同的相对位置;false 表示保持鼠标指针不动。
返回值
如果窗口已移动(包括只有一个显示器的情况),则为 true;如果窗口为空或已关闭,或拒绝移动,则为 false。
WindowSetActive
WindowSetActive(window: Window) → Bool
将窗口置于前台并为其提供键盘焦点;如果窗口已最小化,则先将其还原;如果已隐藏,则将其显示。用 WindowHide 隐藏的窗口不再作为隐藏窗口跟踪。Windows 可能会拒绝,转而闪烁其任务栏按钮。
参数
window: Window— 要激活的窗口。
返回值
如果窗口已成为前台窗口,则为 true;如果 Windows 拒绝,或窗口为空或已关闭,则为 false。
2 个示例: 启动程序、等待其窗口出现并对其操作, 点击窗口内的某个点
WindowSetAlpha
WindowSetAlpha(window: Window, alpha: Integer) → Bool
设置窗口的透明程度,从完全透明到完全不透明。值为 255 时,窗口不再是分层窗口,这也会移除程序自身设置的任何透明效果。除非引擎也以管理员身份运行,否则无法更改以管理员身份运行的程序的窗口。
参数
window: Window— 要更改的窗口。alpha: Integer— 不透明度,范围为 0(完全透明)到 255(完全不透明)。超出该范围的值会被限制在范围内。
返回值
如果已应用透明度,则为 true;如果窗口为空或已关闭,或更改被拒绝,则为 false。
1 个示例: 循环切换窗口透明度
WindowSetBounds
WindowSetBounds(window: Window, x: Integer, y: Integer, width: Integer, height: Integer) → Bool
一步完成窗口的移动和大小调整,使用与 WindowGetX、WindowGetY、WindowGetWidth 和 WindowGetHeight 相同的可见框架坐标。可避免先调用 WindowMoveTo 再调用 WindowResizeTo 所产生的闪烁。
参数
window: Window— 要移动和调整大小的窗口。x: Integer— 可见框架的新左边缘,以虚拟屏幕像素为单位。y: Integer— 可见框架的新上边缘,以虚拟屏幕像素为单位。width: Integer— 新的可见宽度,以像素为单位。height: Integer— 新的可见高度,以像素为单位。
返回值
如果更改已应用,则为 true;如果窗口为空或已关闭,或拒绝更改,则为 false。
WindowSetEnabled
WindowSetEnabled(window: Window, enabled: Bool) → Bool
启用或禁用窗口或控件。已禁用的窗口会忽略鼠标单击和按键,直到再次启用为止。
参数
window: Window— 要更改的窗口或控件。enabled: Bool— true 表示启用窗口;false 表示禁用窗口。
返回值
发出请求后为 true;如果窗口为空或已关闭,则为 false。
WindowSetPropertyInteger
WindowSetPropertyInteger(window: Window, name: Text, value: Integer) → Bool
在窗口上存储一个命名整数,例如用于在多个操作之间记住该窗口的某些信息。引擎退出时会删除它存储的属性。
参数
window: Window— 要在其上存储该值的窗口。name: Text— 属性名称。请选择一个独特的名称,以免与程序自身使用的属性冲突。value: Integer— 要存储的整数。
返回值
如果已存储该值,则为 true;如果窗口为空或已关闭,则为 false。
WindowSetPropertyText
WindowSetPropertyText(window: Window, name: Text, value: Text) → Bool
在窗口上存储一个命名文本值,可用 WindowGetPropertyText 读回。引擎会按原样保存文本(包括字母大小写),文本也可以为空。引擎退出时会删除它存储的属性。
参数
window: Window— 要在其上存储该文本的窗口。name: Text— 属性名称。请选择一个独特的名称,以免与程序自身使用的属性冲突。value: Text— 要存储的文本,最多 1024 个字符。
返回值
如果已存储该文本,则为 true;如果窗口为空或已关闭、已存储 512 个文本值,或无法设置该属性,则为 false。超过 1024 个字符的文本会使操作因错误而停止。
WindowSetTitle
WindowSetTitle(window: Window, title: Text) → Bool
更改窗口标题栏中的文本。程序可能随时将其改回。1 秒内无响应的程序将保持不变。
参数
window: Window— 要重命名的窗口。title: Text— 新的标题文本。
返回值
如果已设置标题,则为 true;如果窗口为空或已关闭、1 秒内无响应,或程序拒绝,则为 false。
1 个示例: 一个手势,多个选项
WindowSetTopmost
WindowSetTopmost(window: Window, topmost: Bool) → Bool · 简单
使窗口保持在所有普通窗口之上,或将其恢复为普通的层叠顺序,而不激活它。
参数
window: Window— 要更改的窗口。topmost: Bool— true 表示使窗口始终置顶;false 表示将其恢复为普通的层叠顺序。
返回值
如果更改已应用,则为 true;如果窗口为空或已关闭,或属于以更高权限运行的程序,则为 false。
1 个示例: 将窗口置顶
WindowShow
WindowShow(window: Window) → Bool
以当前大小和位置重新显示隐藏的窗口,例如用 WindowHide 隐藏的窗口。引擎将不再把它作为隐藏窗口进行跟踪。
参数
window: Window— 要显示的窗口。
返回值
如果已发出显示请求,则为 true;如果窗口为空或已关闭,则为 false。
WindowToggleTopmost
WindowToggleTopmost(window: Window) → Bool · 简单
在始终置顶和普通层叠顺序之间切换窗口,而不激活它。
参数
window: Window— 要更改的窗口。
返回值
如果更改已应用,则为 true;如果窗口为空或已关闭,或拒绝更改,则为 false。它不会告诉您窗口现在处于哪种状态。
WindowWaitClose
WindowWaitClose(window: Window, timeoutMs: Integer) → Bool
等待窗口关闭,每 50 毫秒检查一次。最多阻塞脚本 timeoutMs 毫秒;停止所有操作会提前结束等待。
参数
window: Window— 要等待的窗口。timeoutMs: Integer— 最长等待时间,以毫秒为单位,范围为 0 到 60000。更大的值按 60000 计算;0 表示只检查一次而不等待。
返回值
窗口关闭后为 true,如果窗口已关闭或为空,则立即为 true;如果时间用完时窗口仍处于打开状态或等待被停止,则为 false。
1 个示例: 启动程序、等待其窗口出现并对其操作
WindowWaitFor
WindowWaitFor(pattern: Text, timeoutMs: Integer) → Window
等待出现标题与正则表达式匹配的可见顶级窗口,每 50 毫秒检查一次。最多阻塞脚本 timeoutMs 毫秒;适合在启动程序后立即使用。
参数
pattern: Text— 一个正则表达式,不区分大小写,与窗口标题进行匹配,例如 'Notepad$'。除非用 ^ 或 $ 锚定,否则可匹配标题中的任意位置。timeoutMs: Integer— 最长等待时间,以毫秒为单位,范围为 0 到 60000。更大的值按 60000 计算;0 表示只检查一次而不等待。
返回值
最前面的匹配窗口;如果未及时出现匹配窗口或等待被停止,则返回空窗口。无效的模式会使操作因错误而停止。
1 个示例: 启动程序、等待其窗口出现并对其操作