darker50 发表于 2014-11-16 01:08:04

一个关于run多个窗口的问题

本帖最后由 darker50 于 2014-11-16 23:40 编辑

自己遇见一个问题,就是在间隔时间(5秒左右)运行CMD窗口,每个窗口都会一直有日志输出,且在输出的同时还会有一些autoit的命令查看各个cmd窗口输出的内容(使用的方式去>>d:1.txt,检查文件有没有特殊字段),有特殊字段就弹出msgbox框说明是哪个cmd窗口的进程走完了。

1、自己的开始是用run函数,但在检查特殊字体的时间会卡住,别的cmd窗口都运行不下去
2、其中一个cmd窗口弹出msgbox会让整个autoit程序停止运行


目前想到的是多进程,但不确定方法可行不,自己也查了半天,还是不懂,所以请问下各种大神,指点下小弟吧,谢谢啦

代码放出来了,ip文件自己做个就行了,我就的意思就是在第隔两秒钟去开始去ping IP文件的的ip(数量一般在10条),这样就会有10个ping产生,但同时还有checkfile函数在检查这10个ping是否ping成功了。
下面这个代码有问题,就是一起在ping第一行。

user3000 发表于 2014-11-16 10:39:30

回复 1# darker50

放点代码上来吧?
1,输出内容超大吗? 检查竟然很耗时间?
2,不想程序停止响应,用 TrayTip 等来提示结果.用自创的GUI更好.

要不要多进程,关键在于CMD命令的运行时间吧?

MicroBlue 发表于 2014-11-16 14:11:44

show me your code.

austere 发表于 2014-11-16 21:14:20

我表示完全没有看懂楼主的意思~

darker50 发表于 2014-11-16 23:41:32

回复 3# MicroBlue

it is already show my codethanks

darker50 发表于 2014-11-16 23:42:02

回复 4# austere

好像是东西太多了,我放代码出来说也 这下子明白了吗

wangms 发表于 2014-11-17 10:08:28

学习。。。。。。。。。。。。。。。

netegg 发表于 2014-11-17 11:57:36

msgbox本来就是中断型的,出来了,肯定没法继续运行

MicroBlue 发表于 2014-11-17 13:02:38

首先,我不知道楼主你这么做的目的是什么,如果单纯的是想通过Ping来看Target机器是否在线的话,那我推荐这个软件给你用:
http://www.autoitx.com/forum.php?mod=viewthread&tid=32017&highlight=

其次,如果你想取出CMD命令窗口的输出,对内容做判断,可以使用下面这个函数,不用通过临时文件。这个函数有点问题,只是给你做个参考。


Func __Run_Dos($sShellLine, $sWorkDir = "")

        Local $sStdOut = ""
        Local $sStdErr = ""

        Local $sRetureStr = Run($sShellLine, $sWorkDir, @SW_HIDE,0x4 + 0x2)

        While 1
                $sStdOut &= StdoutRead($sRetureStr)
                $sStdErr &= StderrRead($sRetureStr)
                If @error Then ExitLoop
        WEnd

        if $sStdErr Then

                SetError(1)
                Return $sStdErr
        Else
                SetError(0)
                Return $sStdOut
        EndIf
EndFunc

weeks1 发表于 2014-11-21 07:09:11

学习。。。。。。。。。。

shqf 发表于 2014-11-21 11:43:09

感觉可以用autoit中的ping。
非要用DOS中的ping,需要的结果可放在一个列表框中滚动显示出来也不错。
页: [1]
查看完整版本: 一个关于run多个窗口的问题