当前位置: 首页 > 图文教程 > 脚本技术 > VBScript > 用VBS调用程序并对程序的运行情况进行监控的两个代码

VBScript
用vbs脚本来关闭 HTML 页面的代码
用vbs实现确定是否安装了某个特定的补丁
用vbs确定用户的登录名的代码
用vbs找到映射到共享的所有驱动器并重新映射它们
可以从一台远程服务器运行 SP2 安装程序Install.vbs
用vbs判断一个日期是否在指定的时段内
vbs+hta中实现在单个 onClick 参数中包括多个子例程的代码
vbs中实现启动两个应用程序,一直等到其中一个程序结束,然后关闭另一个?
用vbs实现对文本文件中的项计数
用vbs对文本文件的内容进行排序
用vbscript把 Word 文档保存为文本文件的代码
用vbs返回 Internet Explorer 的下载控件和 Applet 的列表
用vbscript合并多个文本文件的代码
用vbscript防止本地用户更改其密码
用vbs针对一个 IP 地址范围运行脚本
用vbs 实现从剪贴板中抓取一个 URL 然后在浏览器中打开该 Web 站点
使用vbscript脚本在表单中进行选择的代码
一个把任何文件转成批处理的vbs脚本Any2Bat.vbs
windows脚本调试howto的方法
注册表的禁用与解锁方法集合

VBScript 中的 用VBS调用程序并对程序的运行情况进行监控的两个代码


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 72 ::
收藏到网摘: n/a

有同时要用一个CAE软件调用外部程序,但是,通过这个CAE软件调用外部程序以后,因为这个外部程序有参数,调用方法写在Bat文件里的,由CAE软件来调用这个Bat,所以,CAE软件没办法对调用的程序进行监控,调用的程序还在运行当中,准备工作还没完成,就到了下一流程,所以,造成流程出错,我写了两个VBS代码,通过它来调用就解决了这个问题!两个小程序分别是按不同的方式来监控的!
两个程序的调用方式不一样,一个是对系统进程进行监控,一个是对程序生成的文件特征进行监控!
第一个:
‘该程序用来配合SimCode调用其他程序,并对程序的运行情况做监控,!
‘监控方法是:查找程序的Log文件,如果有结束标志,说明程序已经执行完毕!
Set WshShell=Wscript.CreateObject(”Wscript.Shell”)
WshShell.Run(”notepad.exe c:\kw.txt”)'调用的程序
wscript.sleep 2000′等待2秒钟
Dim fso,ts,i
Do While Not i=1′当i=1不成立时,一直循环!
set fso=Wscript.CreateObject(”Scripting.FileSystemObject”)
Set ts=fso.opentextfile(”c:\kw.txt”)'打开调用的程序日生的日志文件
Do While Not ts.AtEndOfStream'当没有到文件尾时循环
data=ucase(trim(ts.readline))'读取日志文件中的一行
If instr(data,”OK”) Then'查找上面读取到的内容是否存在程序运行完的标志!此例中标志为”OK”
i=1′当得到程序运行完成的标志时,传递一个值给Do循环,使其结束循环,不再对Log文件监控
Exit Do
End If
loop
Set ts = nothing
Set fso = nothing'关闭创建的对象
wscript.sleep 2000′等待2秒后,进行下一轮对Log文件的监控
loop
wscript.echo “OK!”‘给用户一个反馈,调用的程序执行完毕!真实使用时,应该不要这一行!
第二个:

‘该程序用来配合SimCode调用其他程序,并对程序的运行情况做监控,!
‘监控方法是:对系统进程的监控
Set WshShell = Wscript.CreateObject(”Wscript.Shell”)
allApp=”c:\windows\system32\notepad.exe” ‘写下要调用的程序的完整路径。
AppName=”notepad.exe” ‘写下调用的程序的名称.
WshShell.Run (allApp) ‘启动调用的程序
dim AppPath
for each ps in getobject(”winmgmts:\\.\root\cimv2:win32_process”).instances_ ‘列出系统中所有正在运行的程序
if lcase(ps.name)=AppName then'检测程序在进程中是否存在
AppPath=ps.commandline'提取程序的命令行
end if
next
do'循环检测
myqqin=chkuin(App)'检测上面得到命令行是否在进程中存在!
if not myqqin then'如果没有运行则,告诉用户,并且结束监控!
msgbox “调用的程序已经退出了!”‘实际使用中,请取掉这一行!
Exit do
else
wscript.sleep 3000′等待5秒
end if
loop'返回继续检测
function chkuin(App)
for each ps in getobject(”winmgmts:\\.\root\cimv2:win32_process”).instances_
if lcase(ps.name)=AppName then
AppPatht1=ps.commandline
if AppPatht1=AppPath then chkuin=true end if
end if
next
end function