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

有同时要用一个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

时间: 2024-11-08 19:06:23

用VBS调用程序并对程序的运行情况进行监控的两个代码_vbs的相关文章

vbs+hta中实现在单个 onClick 参数中包括多个子例程的代码_vbs

问: 您好,脚本专家! 在您的 HTA 示例中,您为我们展示了如何单击一个按钮使一个子例程得以运行. 那么,如何向一个按钮的 onClick 参数添加两个或多个子例程呢? -- FM 答: 您好,FM.您知道,在认知心理学中有一个有趣的分支,称为问题发现:其理论是您回答问题的能力通常首先取决于您问到的问题. 例如,您 – 以及其他几个人 – 想要知道如何在一个按钮的 onClick 参数中指定多个子例程. 我们见过人们尝试对代码做出各种修改,以下就是一个例子: <input type="b

vbs中使用 ADO 读取所有数据均在一行上的文本文件的代码_vbs

使用 ADO 读取所有数据均在一行上的文本文件问: 您好,脚本专家!我有一个固定宽度的文本文件,该文件包含名字(6 个字符).姓氏(13 个字符)和部门(9 个字符),并且它们均在同一行上.我该如何使用 ADO 来读取呢? -- DW 答: 您好,DW.坦白地讲,我们认为您不能使用 ADO(ActiveX 数据对象)读取这样的文件.ADO 是一种和文本文件进行交互的非常好的方法(有关详细信息,请参阅文章有关文本文件的 ADO 更多知识(英文)),但是,确实,ADO 有些挑剔:它的每项设置都必须完

在VC中调用默认的电子邮件程序发送邮件

程序|发送邮件 很多时候大家需要在程序中发送邮件,自己编又太麻烦,怎么办,呵呵,有现成的! 1.想省事儿的,用ShellExecute函数: ShellExecute(NULL,NULL,"mailto:email@263.net",NULL,NULL,SW_SHOW); 2.如果想自己多处理一些东西的话,比如加上默认的帐号.密码.附件等,就可以调用系统的Mapi函数.具体的用法大家可以去查MSDN都是以MAPI开头的,如MAPILogon.MAPISendMail等.下面这段代码演示

调用默认的电子邮件程序发送EMail

示例代码运行效果图如下: 功能介绍:很多时候大家需要在程序中发送邮件,自己编又太麻烦,怎么办,呵呵,有现成的! 1.我们可以用ShellExecute函数简单的调用默认的电子邮件程序: ShellExecute(NULL,NULL,"mailto:email@163.net",NULL,NULL,SW_SHOW); 2.如果想实现复杂一点儿的功能,如添加多个收件人.主题.附件等,就可以调用系统的MAPI函数.具体的用法可以去查MSDN,都是以MAPI开头的,如MAPILogon.MAP

Delphi编程调用指定的Windows程序

本实例介绍如何在自己的程序中调用指定的Windows程序. 首先启动一个新的项目,在空白的窗体上添加4个TButton组件.添加组件后的窗体如图1所示. 图1 添加组件后的窗体 其中WinExec按钮用于以WinExec函数来调用指定的Windows程序.ShellExecute按钮用于以ShellExecute函数来调用指定的Windows程序.CreateProcess按钮和TerminateProcess按钮用于实现对被调用程序更全面的操作,前者用于调用指定的Windows程序,而后者则用

Go语言调用其它程序并获得程序输出的方法_Golang

本文实例讲述了Go语言调用其它程序并获得程序输出的方法.分享给大家供大家参考.具体实现方法如下: 复制代码 代码如下: package main import (     "exec" // "os/exec" in go1     "fmt" ) func main(){     cmd := exec.Command("ls", "-l")     buf, err := cmd.Output()   

vb6-VB6.0如何调用matlab 2010b得程序

问题描述 VB6.0如何调用matlab 2010b得程序 请问VB6.0可以调用matlab 2010b的程序吗?如果可以的话,有哪些方法可用?具体应该怎么实现?thank you 解决方案 matlab包装成com,vb调用 --- 比较简单matlab输出文本文件的结果,vb调用matlab,然后从文件中读取结果 --- 最简单,但是需要目标电脑上安装 matlabmatlab编译成c dll代码,vb调用 --- 最麻烦,但是效率高

跟踪-淘宝返利API调用,用java程序

问题描述 淘宝返利API调用,用java程序 没有返利API,在返利类网站做搜索条件,如何跟踪用户知道购买或注册动作,并且返回数据的,用java程序,是否有资源 (Q:2655077735) 解决方案 淘宝阿里妈妈上面有返利API的,去看看

兄弟我做下了一个fastreport 4.6.8.0的程序直接调用fastreport3.dll 在XP、vs2005情况下运行正常,win7 vs2008下

问题描述 兄弟我做下了一个fastreport4.6.8.0的程序直接调用fastreport3.dll在XP.vs2005情况下运行正常,win7vs2008下运行报检索COM类工厂中CLSID为{4764040E-4222-4DEC-9F2E-82D46E212B3A}的组件时失败,原因是出现以下错误:80040154."等待高手帮忙啊!顺便问下fastreprot有没新的破解版本直接调用DLL的!! 解决方案 解决方案二:已经在administrator账户下解决方案三:..64位..你用