TC官方合作论坛
标题:
关于"辅助.命令"执行被调用程序,需要等待被调用者执行结束的建议
[打印本页]
作者:
cxkice
时间:
2012-9-2 09:23
标题:
关于"辅助.命令"执行被调用程序,需要等待被调用者执行结束的建议
辅助.命令()
如果调用的是一个小程序(或脚本),在此程序(或脚本)未执行结束,主程序的控制流就到下一语句去了。比如以下举例,是需要使用到脚本执行后的结果的。但TC做不到等待脚本运行结束后再执行下一语句。
假设有一个被调用的脚本文件:c:\aaa.vbs, 代码如下:
WScript.Sleep 25*1000 ‘暂停25秒
Set objShell = CreateObject("Wscript.Shell")
objShell.run "cmd.exe /c ping www.163.com -w 0 > c:\jack.txt ", 0, True ’执行ping命令,也需要花上几秒钟时间才能执行结束
TC内的调用代码如下:
语句1 辅助.命令("c:\aaa.vbs", 假) //执行VBS脚本, 并将执行结果保留在:jack.txt中
语句2 string FileString = 文件.读文件("c:\jack.txt ") //读取VBS脚本的执行结果:文件jack.txt的内容
这时,如果执行TC代码,问题就来了:执行<语句1>会调用并运行c:\aaa.vbs, 一运行此脚本,则TC控制流就立即执行<语句2>了。辅助.命令()并没有等待被调用程序执行结束的参数,带来应用范围的不适。没有办法,只得写个循环去判断文件大小来等待被调用程序aaa.vbs是否执行结束, 这增加了代码,相当麻烦。
建议能增加第三个开关参数:true/false, 来表示是否等待被调用程序执行结束。
作者:
孤烟
时间:
2012-9-3 12:43
可以试试这种方案
把 ”辅助.命令("c:\aaa.vbs", 假) “ 这句丢到线程里面执行
然后执行 线程.无限等待 这个会返回线程是否处理完的信号
你试试
作者:
cxkice
时间:
2012-9-12 22:48
这是个很好的建议.谢谢, 觉得应该可以的. 非常感谢TC小鸟, 实际测试及结果,我会在这儿写上的.
欢迎光临 TC官方合作论坛 (http://bbs.52tc.co/)
Powered by Discuz! X3.1