我正在尝试使用 AutoHotkey 读取 Windows CMD 的标准输出。例如,我想将setAHK 内的控制台命令的输出存储在变量中。我不久前已经实现了它,这让我更加困惑为什么它现在不起作用。
在 AHK 论坛中,有一个关于CMDret 的相当老的线程,这是一个基于 DLL 的功能,可以完全满足我的需求。第一个问题是找到一个可用的下载,因为帖子中的所有链接都已失效。Google 给了我另一个网站,托管v3.1.2。虽然似乎有一个较新的版本(分别是v3.2.1 4d Beta),但我检查了它并测试了一个简单的示例:
msgbox % CMDret(COMSPEC " /C set")
CMDret(CMD)
{
VarSetCapacity(StrOut, 10000)
RetVal := DllCall("cmdret.dll\RunReturn", "str", CMD, "str", StrOut)
Return, %StrOut%
}
Run Code Online (Sandbox Code Playgroud)
不幸的是,MsgBox 中什么也没有包含。然后我检查了RetVal哪个值为0;随附的自述文件说:
如果函数失败,返回值为零。
再往下写着:
注意:当前只有 32 位控制台应用程序可以使用此 dll 版本的 CMDret(v3.1.2 或更低版本)。需要 command.com 的调用可能不会产生任何输出,并且可能会崩溃。为了避免这种情况,我在下载中包含了一个名为“cmdstub.exe”的文件(在 Win9x 文件夹中)。当调用16 位控制台应用程序以启用返回输出时,应使用此文件 。
总之,我不确定问题是什么。我的机器运行在 64 位上。但自述文件中的相应条款是否应该仅排除 16 位系统,还是仅包括 32 位系统?
如果计算架构可能不是问题所在,那么问题可能是什么?
我正在寻找的是以下之一:
小智 0
我找到了适用于 AutoHotKey L 64 位的仅脚本解决方案: http://www.autohotkey.com/board/topic/67687-ahkahk-lusing-wsh-to-interact-with-command-line-progs/
经过一番尝试后,我能够捕获我使用 DOS Type 命令列出的 40k 文本文件的整个输出。有一个演示展示了如何与 time 命令交互,如果您需要与 dos 命令或批处理脚本进行有限的双向交互,那么这是很好的选择。
| 归档时间: |
|
| 查看次数: |
11866 次 |
| 最近记录: |