title: 目标描述 description: GhostClickAI 全软件统一的目标描述写法:window:、screen:、android:、process: 前缀、key=value 条件、转义与输出即输入。
目标描述¶
「目标」是告诉节点“在哪个窗口、哪块屏幕、哪个安卓实例上操作”的一行字符串,例如 window:title=网易云音乐、android:type=gc9,number=1。这一行描述目标的文字就叫「目标描述」,本页讲清它的统一写法规则。
宏节点的执行域、目标点击的输入目标、截图、查找窗口、关闭窗口、gpy 的 capture 和 input 系列,输入和输出的都是目标描述。学会这一页,软件里绝大多数输入框你就都会填了。
一句话语法¶
目标描述是 前缀:内容:
- 前缀管大类:
window:(窗口)、screen:(屏幕)、android:(安卓实例)、process:(进程)。 - 内容是裸词简写,或者
key=value条件用英文逗号组合,没有终止符,写到结尾就是结束。 - 值里面如果本身含有
,、=、\,在前面加一个反斜杠转义,例如window:title=标题\,续。
window:记事本 ← 裸词简写:按标题找窗口
window:title=记事本 ← 等价的完整写法
window:process=cloudmusic.exe,title=网易云 ← 两个条件同时满足(AND)
screen:primary ← 主屏
android:gc9 ← 裸词简写:幽点安卓9
android:type=gc9,number=1 ← 等价的完整写法
android:adb=127.0.0.1:5555 ← 按 ADB 地址
输出即输入:节点输出的目标描述(例如“打开”节点吐出的 window:handle=123456、拉起安卓实例吐出的整串 android:type=...,id=...)可以原样连回任何接受目标的输入口,不需要手工拆解或改写。解析器只取自己认识的键用来定位,文档化的信息键(名称、分辨率等)会被忽略,写了不认识的键才会按错别字报错。
window: 窗口¶
| 写法 | 含义 |
|---|---|
window:网易云音乐 | 裸词 = 标题简写,按标题查找(包含匹配、不区分大小写) |
window:title=网易云 | 标题条件,与裸词等价 |
window:process=cloudmusic.exe | 进程条件,按进程映像名精确匹配,.exe 可以省略 |
window:handle=123456 | 句柄条件,十进制或 0x 十六进制 |
window:123456、window:0x1A2B | 纯数字或 0x 开头的裸词 = 句柄简写 |
window:process=cloudmusic.exe,title=网易云 | 多个条件逗号组合,必须同时满足 |
规则要点:
title=、process=等条件可以组合;handle=是窗口身份,不能再与其他条件组合。- 同一个条件写两次、不认识的键、空的
key=值,都会被直接拒绝并报错,软件不会替你猜。 - 找到多个符合条件的窗口时,按各节点自己的规则处理(查找窗口取前台优先,关闭窗口全部关闭)。
- 窗口裁切(只操作窗口的一部分)不写进目标描述,它是宏节点录制时单独保存的 windowCrop 设置。
screen: 屏幕¶
| 写法 | 含义 |
|---|---|
screen: 或 screen:primary | 主屏 |
screen:2 | 尾号序号,只匹配 DISPLAY2,不会错配 DISPLAY12 |
screen:id=\\.\DISPLAY2 | 按显示器 ID 精确匹配(大小写不敏感) |
只写名称时会按唯一包含匹配;匹配到多块屏会报歧义错误,找不到就返回空,不会悄悄替你选第一块屏。
android: 安卓实例¶
| 写法 | 含义 |
|---|---|
android:gc9 | 类型简写,等同 android:type=gc9 |
android:gc9#1、android:type=gc9,number=1 | 用 #编号 或 number= 指定同类型的第几个 |
android:name=回廊机 | 按实例名称继续收窄 |
android:id=gcai-... | 按稳定实例 ID |
android:path=实例路径 | 按实例目录,类型自动识别 |
android:adb=127.0.0.1:5555 | 按 ADB 地址(也认 emulator-5554 形态) |
android:幽点安卓9 | 中文类型名同样可以识别 |
类型别名:自有实例 gc9(幽点安卓9)、gc14(幽点安卓14),第三方 ld9、ld14(雷电)、mumu12、mumu15、nox。多条件命中多个实例时按编号升序取第一个。
“拉起安卓实例”“查找运行中安卓实例”输出的完整实例信息长这样:
android:type=gc9,id=gcai-...,name=回廊机,adb=127.0.0.1:6101,route=ghostclick-instance:gcai-...,status=ok
这整串就是标准的目标描述,原样连给截图、宏、目标点击或实例控制节点即可,不要手工拆出裸 ADB 地址再拼接——裸地址不包含宿主实例身份,隐藏/显示/关闭实例等操作会拒绝。旧蓝图里 android:{json} 形式的实例串仍能被读取。
process: 进程¶
process:进程名 表示按进程定位,目前主要用于需要进程目标的节点(例如关闭进程)。进程名不区分大小写、.exe 可省,会命中所有同名进程。
空目标与连线优先¶
- 接受目标的端口连线时以连线给的目标为准,节点上手工填写的内容只在未连线时生效;连线后字段会显示“由连接提供”。
- 宏节点的执行域留空 = 在桌面上执行;目标点击等自动化输入节点留空同样表示 PC 桌面。
- 少数节点对空目标有自己的安全约定:关闭窗口在空目标或只写
window:时不关闭任何窗口,直接输出 false 继续。 - 显式写出的目标不存在或不唯一时会报错,不会自动换成主屏或别的窗口。
哪里会用到目标描述¶
| 位置 | 说明 |
|---|---|
| 宏节点的执行域 | 指定整段宏在哪个目标上执行,留空为桌面 |
| 目标点击、两点拖拽、输入文本 | 输入目标端口 |
| 截图、多状态 UI 识别 | 目标字符串端口 |
| 查找窗口、关闭窗口与关闭进程 | 查询 / 目标端口 |
gpy 的 capture、input.click/swipe/key/text | 第一个参数就是目标描述 |
常见错误¶
- 把
window:写成win:或windows::前缀只认文档列出的几种;不认识的前缀不会回退成窗口猜测。 - 手工拼裸 ADB 地址当安卓目标:请直接连接实例信息整串;手动连接只有地址、没有宿主身份。
- 在标题里直接写英文逗号:逗号是条件分隔符,标题本身含逗号要写成
window:title=标题\,续。 handle=再叠加标题条件:句柄已经是唯一身份,组合会被拒绝。