如何在PHP中获取AHK脚本的执行结果?
解决PHP调用AHK脚本获取数据的问题
问题根源
你用了start命令启动AHK,这会让AHK在独立的新窗口运行,和PHP的执行进程完全脱离,所以PHP捕获不到AHK的输出和退出码——你拿到的0其实是start命令本身执行成功的返回码,和AHK无关。
解决步骤
1. 修改AHK脚本,输出内容到标准输出
原来的MsgBox是弹窗,不会把内容输出到控制台(标准输出),要改成向标准输出写内容:
; 把内容输出到标准输出,PHP才能捕获到 FileAppend, % "Hello world", * ; 指定退出码,PHP会拿到这个值 ExitApp, 7777
2. 修改PHP的调用代码,去掉start命令
直接调用AHK执行脚本,不要用start:
; 替换成你的ahk.exe路径和脚本路径 $result = exec('C:\path\to\ahk.exe C:\path\to\your_script.ahk', $output, $result_code); var_dump($result, $output, $result_code);
3. 验证结果
执行后你应该能看到类似这样的输出:
string(11) "Hello world" array(1) { [0]=> string(11) "Hello world" } int(7777)
额外说明
- 如果想传递更多数据,直接在AHK里用
FileAppend多次输出即可,每行内容会被PHP存到$output数组的对应元素里。 - 要是你不想用单独的脚本文件,也可以直接把AHK代码作为参数传递给ahk.exe:
$ahkCode = 'FileAppend, % "Hello world", *`nExitApp, 7777'; $result = exec('C:\path\to\ahk.exe /c "' . $ahkCode . '"', $output, $result_code);
内容的提问来源于stack exchange,提问作者Tamila Ambeon
相关产品推荐
相关产品推荐

