找回密码
 加入
搜索
查看: 16510|回复: 24

[AU3基础] Au3如何返回Dos窗口的输出信息?

 火.. [复制链接]
发表于 2008-7-24 14:59:21 | 显示全部楼层 |阅读模式
如题,用Au3运行某DOS程序

如何在Au3中返回Dos窗口的输出信息?用Wingettext似乎不行

请各位大侠帮忙~~

[ 本帖最后由 simxinzi 于 2008-8-9 23:23 编辑 ]
发表于 2008-7-24 15:45:37 | 显示全部楼层
我也想知道呢
发表于 2008-7-24 15:46:27 | 显示全部楼层
我的笨方法:
命令直接输出到文本文件中:
dir *.exe > c:\a.txt
之后打开c:\a.txt
发表于 2008-7-24 16:05:08 | 显示全部楼层
;注意:回显截取只支持Run而不是RunWait
#include <Constants.au3>
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-7-26 14:53:09 | 显示全部楼层
原帖由 runningwater 于 2008-7-24 16:05 发表
;注意:回显截取只支持Run而不是RunWait
#include
Opt("MustDeclareVars",1)
_test()
Func _test()
Local $foo,$line,$lines
$foo = Run(@ComSpec & " /c sc query Alerter", @SystemDir, @SW_HIDE, $STDOUT_C ...

我觉得说得不是非常正确
楼主可以运行这样的语句
RunWait(@ComSpec & ' /c netstat -ano > ' & @TempDir & '\NetSOT.tmp', "", @SW_HIDE)
然后你去TempDir & '\NetSOT.tmp看看这个文件的内容(用记事本打开)
其实这个NetSOT.tmp文件就是你要的回显内容了
接着就先读取行数,然后显示出来
if _FileReadToArray(@TempDir & '\NetSOT.tmp', $DataArray) <> 0 Then
   For $I = 5 To $DataArray[0] - 1
这个代码来自




AutoIt 版本: 3.2.5.0(第一版)
脚本作者: allenmou
        Email: allenmou@163.com
        QQ/TM: 402090001
脚本功能: 本机开放端口查看

[ 本帖最后由 ken0137 于 2008-7-26 14:54 编辑 ]
发表于 2008-7-26 21:04:37 | 显示全部楼层

发个例子给需要的人

#include <Constants.au3>
$foo = Run(@ComSpec, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
ProcessWaitClose($foo)
$text=StdoutRead($foo)
MsgBox(0, "STDOUT read:", $text)
发表于 2008-7-26 21:43:12 | 显示全部楼层
原帖由 ken0137 于 2008-7-26 14:53 发表

我觉得说得不是非常正确
楼主可以运行这样的语句
RunWait(@ComSpec & ' /c netstat -ano > ' & @TempDir & '\NetSOT.tmp', "", @SW_HIDE)
然后你去TempDir & '\NetSOT.tmp看看这个文件的内容(用记事本打开)
...


你说的根本就不是一回事, 就提供的方法技术而言, 人家的更高一筹,  不用临时文件的才更简洁
发表于 2008-7-26 21:52:10 | 显示全部楼层
条条大道通罗马。。。看个人的喜好的了。
发表于 2009-8-6 02:11:51 | 显示全部楼层
#include
$foo = Run(@ComSpec, @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
ProcessWaitClose($foo)
$text=StdoutRead($foo)
MsgBox(0, "STDOUT read:", $text)
kakinkgb 发表于 2008-7-26 21:04

太谢谢了,这个例子非常好
发表于 2009-8-10 19:54:14 | 显示全部楼层
试了一下..好像无返回结果
发表于 2009-10-10 23:32:10 | 显示全部楼层
回显截取只支持Run而不能RunWait
发表于 2011-3-25 10:47:03 | 显示全部楼层
不错  这几天的研究正需要
发表于 2011-7-7 10:32:41 | 显示全部楼层
支持下,学习学习
发表于 2011-12-6 09:11:11 | 显示全部楼层
学习了,很好,很强大
发表于 2012-2-23 08:36:32 | 显示全部楼层
搜索资料到这儿,谢谢楼上各位!
您需要登录后才可以回帖 登录 | 加入

本版积分规则

QQ|手机版|小黑屋|AUTOIT CN ( 鲁ICP备19019924号-1 )谷歌 百度

GMT+8, 2024-5-1 04:40 , Processed in 0.077541 second(s), 19 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

快速回复 返回顶部 返回列表