用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

(0)

相关推荐

  • VB键盘鼠标无动作调用程序的尝试

    我想要实现的功能是,当键盘无输入.鼠标无移动或点击动作时调用程序.首先想到的是用钩子HOOK来获取键盘或者鼠标的动作,如果无动作时调用程序.我尝试的结果是HOOK来HOOK去总是有问题. 后来想到Windows的屏幕保护程序就是当键盘鼠标无动作时进入屏幕保护的,于是改变思路,想把程序做成这样的形式,键盘鼠标无动作,系统进入屏幕保护,然后检测系统是否运行屏幕保护程序,如果运行的话则调用程序.这种方式就是以屏幕保护程序作为中介,把检测键盘鼠标动作的工作交给屏幕保护程序来完成了.SystemParam

  • VB6.0 支持鼠标滚轮教程

    操作步骤如下: 1.下载 http://download.microsoft.com/download/e/f/b/efb39198-7c59-4ace-a5c4-8f0f88e00d34/vb6mousewheel.exe 这是一个自解压的包,其中包含VB6IDEMouseWheelAddin.dll和其源程序,将其解压到桌面即可.   2.选择直接使用VB6IDEMouseWheelAddin.dll,或者无聊地将源程序自行编译出一个新的VB6IDEMouseWheelAddin.dll.

  • 用VBS控制鼠标的实现代码(获取鼠标坐标、鼠标移动、鼠标单击、鼠标双击、鼠标右击)

    怎么用VBS模拟鼠标左键单击.左键双击.右键单击?-- 网上搜到的答案普遍是VBS无法实现,或者是要用第三方COM(ActiveX?)组件.我对第三方组件是很反感的,使用第三方组件毫无可移植性可言,因为别人的系统中不一定注册了这个组件.我的建议是,尽量不要在VBS代码中调用第三方组件,除非你的程序只是写来自己用.(顺便说一下,也尽量不要用不靠谱的Sendkeys方法,原因不解释) 好了,废话就说这么多,现在说说用VBS控制鼠标的方法.我以前写过一篇<VBS调用Windows API函数>,本以

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

    有同时要用一个CAE软件调用外部程序,但是,通过这个CAE软件调用外部程序以后,因为这个外部程序有参数,调用方法写在Bat文件里的,由CAE软件来调用这个Bat,所以,CAE软件没办法对调用的程序进行监控,调用的程序还在运行当中,准备工作还没完成,就到了下一流程,所以,造成流程出错,我写了两个VBS代码,通过它来调用就解决了这个问题!两个小程序分别是按不同的方式来监控的! 两个程序的调用方式不一样,一个是对系统进程进行监控,一个是对程序生成的文件特征进行监控! 第一个: '该程序用来配合SimC

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

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

  • Call 从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序。

    Call 从一个批处理程序调用另一个批处理程序,并且不终止父批处理程序.call 命令接受用作调用目标的标签.如果在脚本或批处理文件外使用 Call,它将不会在命令行起作用. 语法 call [[Drive:][Path] FileName [BatchParameters]] [:label [arguments]] 参数 [Drive:}[Path] FileName  指定要调用的批处理程序的位置和名称.filename 参数必须具有 .bat 或 .cmd 扩展名.  BatchPara

  • C++调用C#的DLL程序实现方法

    把C#编译成DLL或者Axtive控件,再由C调用!比如使用C++调用C#的DLL. SwfDotNet是.net下输出flash的类库.SwfDotNet是C#编写的,作者的C#水平,真是令我佩服.这是个特别好的读写Swf文件的库.但是,我要用在C++项目中,怎么让C++调用C#的DLL呢.今天一上午都在琢磨这个问题,耽误了很多时间,原因是编译是出现:warning C4819: 该文件包含不能在当前代码页(936)中表示的字符.请将该文件保存为 Unicode 格式以防止数据丢失. 接着就是

  • python调用系统中应用程序

    目录 os.system() 在shell中执行一条命令.函数原型如下: 它是最简单的调用系统应用的方式,下面是一个例子: import osimport sysos.system("dir")os.system("git") 结果如下(在VS Code中的打印结果,后面略了一部分打印信息): D:\Codes\python_everything>cd d:\Codes\python_everything && cmd /C "set

  • SpringCloud应用idea实现可相互调用的多模块程序详解

    目录 版本选择 技术选型 spring boot单体模块的搭建 创建父工程 父工程的pom文件 创建子模块 RestTemplate 使用步骤 系统重构(子模块间重复代码的抽取) 版本选择   学习spring cloud之前需要有一定的spring boot基础,按我现阶段的了解就是,spring boot属于是做业务开发的,所谓的微服务就是将一个大的项目分为是很多的使用spring boot进行开发的单体项目.当然如果没有后续的话,那么这一个项目也就成了一盘散沙,没有办法真正的实现它的作用,

  • VBS调用Photoshop批量生成缩略图的代码

    模仿腾讯新闻页,给KingCms添加了新闻页图片点播的代码,代码要求的图片点播格式如下: 0###http://www.website.org/UploadFile/123.jpg@@@/small/123.gif@@@8标题一***http://www.website.org/UploadFile/456.jpg@@@/small/456.gif@@@标题二***http://www.website.org/UploadFile/789.jpg@@@/small/789.gif@@@标题三 格

  • 使用winrar打包air程序为exe(包含air运行环境)

    Adobe AIR安装率实在太低了.所以很必要对你的air程序进行打包.那个Shu我是没用过,广告打得很猛,但是完全可以用winrar就达到打包air的目的. 1.准备好你需要打包的文件.去你的flex sdk的bin中找到adl.exe,拷贝过来:然后在把flex sdk中的runtimes文件夹也拷贝出来.这些和你需要打包的文件放在同一目录下.如图: adl.exe和runtimes主要是用来创建Adobe air运行环境,让你的程序能在没有安装Adobe air的机器上也能运行起来. 2.

  • VBS调用Windows API函数的代码

    那天无意中搜索到一篇<WinCC VBS利用EXCEL调用Windows API函数>的文章,不知道WinCC是什么,Google了一下好像跟西门子自动化有关.WinCC是什么并不重要,重要的是这篇文章提供了VBS调用Windows API的一种思路--EXCEL VBA,一种传说比VB还要VB的语言. 但是那篇文章中的例子都是使用已经写好的EXCEL VBA程序,即首先得存在一个EXCEL文件.我就想,能不能在VBS中通过excel.application对象创建一个包含VBA代码的EXCE

  • 编写漂亮的代码 - 将后台程序与前端程序分开

    在编写PHP程序时,有些代码是用来处理一些事务,例如操作数据库.进行数学运算等,而另外的一些代码则只是事务处理的结果显示出来,例如一些使用echo语句将结果以HTML的格式显示在Web浏览器上的PHP代码以及那些直接嵌入PHP程序的HTML代码.首先我们应该清晰地区分这两种代码,把前者称为后台程序,把后者称为前端程序. 因为PHP是一种嵌入式编程语言,也就是说,所有的PHP代码都可以嵌入到HTML代码之中,这为程序的编写带来了许多便利之处.但是,"物极必反",如果在一段较长的程序中将P

随机推荐