命令互调、参数与返回值
这章适合已经能编写短 AHK 命令的用户。调用接口由发行包中的基础脚本和原生组件共同提供,复制命令时需要保持它们配套。
按名字调用命令
在 type=f 正文中:
ahk
GoSub({name: "starter_notepad"})这相当于向主程序提交一次调用,不会自动等价于当前鼠标手势。被调用命令依赖的坐标或窗口字段,需要明确传入。
也可以附加自定义字段:
ahk
GoSub({name: "show_message", message: "来自另一条命令"})接收方:
ini
[show_message]
type=f
code='''
MsgBox(this["message"])
'''message 是调用者约定提供的字段。它不需要成为主程序预定义的配置项。
向常驻命令发送函数调用
目标脚本已经注册自己的接收端时,可以使用 ahkpost("目标名", "函数名", 参数...) 或 ahkcall("目标名", "函数名", 参数...)。前者用于发送,后者用于等待返回。
目标未启动时,type=t 加 to 可以尝试命名调用;带 auto 时,在目标定义存在的前提下尝试启动目标后再次连接。
ini
[call_service]
type=t
to=my_service
fn=show_text
ps=hello
auto=1这需要已有名为 my_service 的常驻命令并提供 show_text 函数,不是独立可用的服务示例。
多参数和类型
普通 ps 是一个字符串。需要结构化参数时,使用约定的 JSON 转换和参数展开属性,例如 AHK 接收路径中的 rv=js、psin=1。vr 则是主程序侧的参数替换,两者不是同一个阶段。
返回值的边界
普通命令提交不等于同步求值。当前主程序的同步 return 路径主要转发 type=t 调用;不能给任意 type=f 命令加一个 return=1,就假定拿到了函数返回值。
需要返回时先验证目标接收端、返回类型和超时处理。长任务优先发送后独立观察结果,避免把输入处理链阻塞在同步等待上。