有没有读取命令行窗口内容的函数?
比如说,我在命令行窗口运行一个dir命令,用AU3可以读取DIR命令显示出来的内容目的是用7za.exe解压压缩包,然后在AU3界面上显示出解压的文件,然后用文件数在确定进度条的进度:face (35):
[ 本帖最后由 leewger 于 2008-7-9 10:45 编辑 ] 我也想知道怎么弄,如果靠定向输出生成的过度文件,始终觉得啰嗦一些。看到JUJUMAO原来的驱动解压,文本都是在AU3窗口显示的。
dos有个管道命令“|”,不知AU3能否实现接收管道传来的数据。 DOS命令的用RUN。。。
加上I/O标志即可。FAQ说明非常清楚了,为什么没人愿看一下呢? 用i/o标志后,怎么在GUI上显示出内容呢? 看到了,谢谢3恨斑斑!
Q2.5 运行DOS命令如何直接截取回显?
;注意:回显截取只支持Run而不是RunWait
#include
Opt("MustDeclareVars",1)
_test()
Func _test()
Local $foo,$line,$lines
$foo = Run(@ComSpec & " /c sc query Alerter", @SystemDir, @SW_HIDE, $STDOUT_CHILD)
$lines = ""
While 1
$line = StdoutRead($foo)
If @error Then ExitLoop
$lines &= $line
Wend
MsgBox(0,"test",$lines)
EndFunc
[ 本帖最后由 顽固不化 于 2008-6-27 14:24 编辑 ] 我运行的你的代码
$lines里是空的
我把run中换成的了 dir c:\ 例子里#include <Constants.au3>
帮助里的例子也不错
#include <Constants.au3>
Local $foo = Run(@ComSpec & " /c dir foo.bar", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
Local $line
While 1
$line = StdoutRead($foo)
If @error Then ExitLoop
MsgBox(0, "STDOUT read:", $line)
Wend
While 1
$line = StderrRead($foo)
If @error Then ExitLoop
MsgBox(0, "STDERR read:", $line)
Wend
MsgBox(0, "Debug", "Exiting...")
页:
[1]