AHK 经常需要启动外部程序:打开软件、运行命令行工具、启动浏览器、调用批处理、等待某个工具执行完再继续。这里最核心的命令是 Run、RunWait、Process 和 RunAs。
先给结论
- 只负责打开程序:用
Run。 - 必须等程序结束再继续:用
RunWait。 - 需要获取或关闭进程:用
Process。 - 需要指定管理员或其他账号:再看
RunAs。 - 路径里有空格:记得加引号,工作目录单独写。
打开一个程序
最简单的场景就是启动外部程序。路径中有空格时,外层命令参数要处理好引号。
#Requires AutoHotkey v1.1 Run, notepad.exe
如果是具体路径,推荐先放到变量里,后续排错更容易。
exe := "C:\Windows\System32\notepad.exe" Run, %exe%
等待程序执行完:RunWait
如果你调用的是转换工具、命令行程序、打包工具,后续代码依赖它执行完成,就不要用 Run,应该用 RunWait。
tool := A_ScriptDir "\tools\convert.exe" input := A_ScriptDir "\in.txt" output := A_ScriptDir "\out.txt" RunWait, "%tool%" "%input%" "%output%", %A_ScriptDir% MsgBox, 转换完成
拿到进程 PID
Run 可以把新进程的 PID 输出到变量里。后续你可以用 PID 来等待窗口、判断进程是否还在。
Run, notepad.exe,,, pid
WinWait, ahk_pid %pid%,, 5
if ErrorLevel
MsgBox, 记事本窗口没有出现
else
MsgBox, % "PID:" pid
Process 用来查和管进程
如果你的目标不是窗口,而是进程本身,Process 更直接。例如判断某个程序是否运行。
Process, Exist, notepad.exe
if ErrorLevel
MsgBox, 记事本正在运行,PID:%ErrorLevel%
else
MsgBox, 记事本没有运行
不要把 Run 当成万能自动化
Run 只负责启动,不负责后续操作。启动以后要点按钮、输入文本、等窗口出现,就要回到窗口控制、控件控制、剪贴板、浏览器自动化这些路线。
站内延伸
声明:站内资源为整理优化好的代码上传分享与学习研究,如果是开源代码基本都会标明出处,方便大家扩展学习路径。请不要恶意搬运,破坏站长辛苦整理维护的劳动成果。本站为爱好者分享站点,所有内容不作为商业行为。如若本站上传内容侵犯了原著者的合法权益,请联系我们进行删除下架。

评论(0)