smooth 发表于 2014-3-21 21:23:57

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

调用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

谢谢!

kpshare 发表于 2014-3-25 12:18:00

我也需要这方面的功能,不知道你实现了没有?如果实现了,麻烦告诉我一下,谢谢。

haijie1223 发表于 2014-3-25 21:22:08

http://www.autoitx.com/thread-175-1-1.html

smooth 发表于 2014-3-25 22:45:35

本帖最后由 smooth 于 2014-3-25 22:46 编辑


haijie1223 发表于 2014-3-25 21:22 http://www.autoitx.com/images/common/back.gif

谢谢,可能你没理解我提的问题。我的问题是,调用CMD执行命令之后,CMD窗口的信息是滚动的,时间可能有10分钟。我想实现的效果是:每当CMD窗口出现一行,即时把这行传送的一个控件如编辑控件上显示出来,效果就像CMD窗口的滚屏,并且与CMD是同步的。普通的截取回显没有问题。

haijie1223 发表于 2014-3-25 23:25:58

回复 4# smooth #include <Constants.au3>
GUICreate("", 300, 400)
$edit = GUICtrlCreateEdit("", 10, 10, 280, 380)
GUISetState()
$foo = Run(@ComSpec & " /cping 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这个问题,我认为用截获回显的方法并不是很科学。

smooth 发表于 2014-3-26 09:53:12

本帖最后由 smooth 于 2014-3-26 10:00 编辑

回复 5# haijie1223

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

haijie1223 发表于 2014-3-26 10:27:22

回复 6# smooth


    那样就更不科学~我觉得你可以借鉴这样的方法:http://www.autoitx.com/thread-43881-1-1.html

lpxx 发表于 2014-3-26 22:18:57

http://www.autoitx.com/forum.php?mod=redirect&goto=findpost&ptid=43134&pid=560901&fromuid=7633057

http://www.autoitx.com/forum.php?mod=redirect&goto=findpost&ptid=37762&pid=516262&fromuid=7633057

看看对你有没有参考

yeqing880 发表于 2014-3-27 13:14:53

用匿名管道是最佳方法

damoo 发表于 2014-3-29 21:50:36

不错的想法,学习了。
页: [1]
查看完整版本: 可否让cmd窗口信息同步传送到某个控件并实时显示?