如何用vbs实现:监控进程aaa.exe是否在运行,如果在运行,则自动运行一次bbb.bat,否则继续无限循环?

如何用vbs实现:监控进程aaa.exe是否在运行,如果在运行,则自动运行一次bbb.bat,如果不在运行,则继续循环监控aaa.exe是否在运行,如此无限循环……注意:... 如何用vbs实现:监控进程aaa.exe是否在运行,如果在运行,则自动运行一次bbb.bat,如果不在运行,则继续循环监控aaa.exe是否在运行,如此无限循环……
注意:如果aaa.exe在运行,则只是运行一次bbb.bat,而当bbb.bat运行完毕自动退出后,在aaa.exe关闭重启前,都不会再次运行。

该vbs脚本不需要弹窗提示,后台运行即可。

我知道这个用批处理很容易实现,但我的情况必须用vbs,请高手支招!感激!
展开
 我来答
控盘惨
推荐于2016-01-27 · TA获得超过1074个赞
知道小有建树答主
回答量:582
采纳率:100%
帮助的人:481万
展开全部

看这样子好像是要做病毒?呵呵,代码来如下:

On Error Resume Next
Dim WS,WMI,Objs,OK
Set WS=WScript.CreateObject("WScript.Shell")
Do
 Set WMI=GetObject("WinMgmts:")
 Set Objs=WMI.InstancesOf("Win32_Process")
 For Each Obj In Objs
  If Obj.Description="aaa.exe" Then OK=True
  '上面代码的双引号中填写要监视的进程名.
 Next
 If OK Then
  WS.Run Chr(34)+"bbb.bat"+Chr(34),0 '这里写如果存在aaa.exe这个进程则运行的程序.
  Exit Do
 End If
Loop

采纳哦!

追问
按照上述代码运行后,发现如果aaa.exe退出后再次重新启动时,不会自动运行bbb.bat,必须关闭vbs进程再次打开,这时打开aaa.exe才会自动运行bbb.bat,就是说,上述代码只在aaa.exe第一次启动时才会运行bbb.bat,有没有办法实现每次aaa.exe启动时都自动运行一次bbb.bat?
追答

是不是这样啊?

如果是这样代码如下哦:

On Error Resume Next
Dim WS,WMI,Objs,LisEXE,OpenEXE,Have
Set WS=WScript.CreateObject("WScript.Shell")
LisEXE="notepad.exe" '这行的双引号中填写要监视的进程名.
OpenEXE="bbb.bat" '这里写如果存在aaa.exe这个进程则运行的程序.
Do
 Set WMI=GetObject("WinMgmts:")
 Set Objs=WMI.InstancesOf("Win32_Process")
 For Each Obj In Objs
  If Obj.Description=LisEXE Then
   WS.Run Chr(34)+OpenEXE+Chr(34),1
   LisPro
  End If
 Next
Loop

Private Sub LisPro()
On Error Resume Next
Do
 Have=False
 Set WMI=GetObject("WinMgmts:")
 Set Objs=WMI.InstancesOf("Win32_Process")
 For Each Obj In Objs
  If Obj.Description=LisEXE Then Have=True
 Next
 If Have<>True Then Exit Do
Loop
End Sub

这个代码我一开始写的时候遇到了很多麻烦,试了很多种方法才想到这样弄.呵呵,采纳哦!

推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式