一个关于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第一行。
回复 1# darker50
放点代码上来吧?
1,输出内容超大吗? 检查竟然很耗时间?
2,不想程序停止响应,用 TrayTip 等来提示结果.用自创的GUI更好.
要不要多进程,关键在于CMD命令的运行时间吧? show me your code. 我表示完全没有看懂楼主的意思~ 回复 3# MicroBlue
it is already show my codethanks 回复 4# austere
好像是东西太多了,我放代码出来说也 这下子明白了吗 学习。。。。。。。。。。。。。。。 msgbox本来就是中断型的,出来了,肯定没法继续运行 首先,我不知道楼主你这么做的目的是什么,如果单纯的是想通过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
学习。。。。。。。。。。 感觉可以用autoit中的ping。
非要用DOS中的ping,需要的结果可放在一个列表框中滚动显示出来也不错。
页:
[1]