TC官方合作论坛

 找回密码
 立即注册
查看: 1370|回复: 2

关于"辅助.命令"执行被调用程序,需要等待被调用者执行结束的建议

[复制链接]
发表于 2012-9-2 09:23:33 | 显示全部楼层 |阅读模式

马上加入TC

您需要 登录 才可以下载或查看,没有帐号?立即注册

x
辅助.命令()
       如果调用的是一个小程序(或脚本),在此程序(或脚本)未执行结束,主程序的控制流就到下一语句去了。比如以下举例,是需要使用到脚本执行后的结果的。但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:51 | 显示全部楼层
可以试试这种方案
把 ”辅助.命令("c:\aaa.vbs", 假)        “ 这句丢到线程里面执行
然后执行 线程.无限等待  这个会返回线程是否处理完的信号
你试试
回复 支持 反对

使用道具 举报

 楼主| 发表于 2012-9-12 22:48:01 | 显示全部楼层
这是个很好的建议.谢谢, 觉得应该可以的. 非常感谢TC小鸟, 实际测试及结果,我会在这儿写上的.
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

关闭

推荐上一条 /2 下一条

关闭

小黑屋|TC官方合作论坛 (苏ICP备18045623号)

GMT+8, 2024-9-29 13:51 , Processed in 0.031432 second(s), 23 queries .

Powered by 海安简单软件服务部

© 2008-2019 版权所有 保留所有权利

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