找回密码
 加入
搜索
查看: 5774|回复: 9

[AU3基础] 可否让cmd窗口信息同步传送到某个控件并实时显示?

  [复制链接]
发表于 2014-3-21 21:23:57 | 显示全部楼层 |阅读模式
调用cmd执行某句命令,然后cmd窗口会滚动显示执行信息,不知道是否可以让回显的信息实时地传送到某一个控件上,并同步显示出来?我用下面的代码捣鼓了半天也弄不出来。

#include <Constants.au3>

Local $foo = Run(@ComSpec & " /c impdp system/123456@ORCL DIRECTORY=DUMP_EXP DUMPFILE=NC.DMP REMAP_SCHEMA=NC:NC65", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
Local $line

While 1
    $line = StdoutRead($foo)
    If @error Then ExitLoop
Wend

While 1
    $line = StderrRead($foo)
    If @error Then ExitLoop
Wend

谢谢!
发表于 2014-3-25 12:18:00 | 显示全部楼层
我也需要这方面的功能,不知道你实现了没有?如果实现了,麻烦告诉我一下,谢谢。
发表于 2014-3-25 21:22:08 | 显示全部楼层
 楼主| 发表于 2014-3-25 22:45:35 | 显示全部楼层
本帖最后由 smooth 于 2014-3-25 22:46 编辑
haijie1223 发表于 2014-3-25 21:22


谢谢,可能你没理解我提的问题。我的问题是,调用CMD执行命令之后,CMD窗口的信息是滚动的,时间可能有10分钟。我想实现的效果是:每当CMD窗口出现一行,即时把这行传送的一个控件如编辑控件上显示出来,效果就像CMD窗口的滚屏,并且与CMD是同步的。普通的截取回显没有问题。
发表于 2014-3-25 23:25:58 | 显示全部楼层
回复 4# smooth
#include <Constants.au3>
GUICreate("", 300, 400)
$edit = GUICtrlCreateEdit("", 10, 10, 280, 380)
GUISetState()
$foo = Run(@ComSpec & " /c  ping 192.168.1.1 /t", @SystemDir, @SW_HIDE, $STDERR_CHILD + $STDOUT_CHILD)
$lines = ""
While 1
        $line = StdoutRead($foo)
        If @error Then ExitLoop
        $lines &= $line
        GUICtrlSetData($edit, $lines)
        Sleep(1000)
WEnd
这个问题,我认为用截获回显的方法并不是很科学。
 楼主| 发表于 2014-3-26 09:53:12 | 显示全部楼层
本帖最后由 smooth 于 2014-3-26 10:00 编辑

回复 5# haijie1223

嗯,我也知道。可是我想不出来有什么办法可以让程序执行的时候让用户看到过程。我执行RUNWAIT()的时候,除了CMD窗口有滚动的信息显示之外,还同步生成一个LOG日志文件,我也试过读取逐行filereadline(或者整个文件一个读fileread)的方法,并传送到控件Edit,但是没有成功。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?加入

×
发表于 2014-3-26 10:27:22 | 显示全部楼层
回复 6# smooth


    那样就更不科学~我觉得你可以借鉴这样的方法:http://www.autoitx.com/thread-43881-1-1.html
发表于 2014-3-26 22:18:57 | 显示全部楼层
发表于 2014-3-27 13:14:53 | 显示全部楼层
用匿名管道是最佳方法
发表于 2014-3-29 21:50:36 | 显示全部楼层
不错的想法,学习了。
您需要登录后才可以回帖 登录 | 加入

本版积分规则

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

GMT+8, 2024-12-18 10:22 , Processed in 0.095437 second(s), 25 queries .

Powered by Discuz! X3.5 Licensed

© 2001-2024 Discuz! Team.

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