vbs监控进程并调用程序

要求VBS监控进程,当进程ID1.exe结束后,立即执行c:\2.exe程序,并不要求返回值,当c:\2.exe执行成功后,VBS立即结束退出,此操作只执行一次。调用返回... 要求VBS监控进程,当进程ID 1.exe结束后,立即执行c:\2.exe程序,并不要求返回值,当c:\2.exe执行成功后,VBS立即结束退出,此操作只执行一次。
调用返回值我都知道了,谢谢你,但是我要的主要是监控系统进程1.exe,当1.exe结束后立即调用c:\2.exe文件
展开
 我来答
I孙空空I
2008-02-21 · TA获得超过2043个赞
知道小有建树答主
回答量:328
采纳率:0%
帮助的人:0
展开全部
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate "Calculator"
AppActivate 方法返回的布尔值表示过程调用是否成功。例如,可用下列方法判断:
if (WshShell.AppActivate "Calculator") then
msgbox "Calculator running"
else
msgbox "Calculator not running"
end if
根据调用的方法、函数的返回值作下一步的操作。具体的参考可看“Script56.CHM”。

****************************************
对不起,疏忽了,我再次查帮助:

1、前面的例子漏了一句:
WshShell.Run "calc"

AppActivate 方法返回的布尔值表示过程调用是否成功。该方法将焦点转移到命名应用程序或窗口中。
------------------------------------------
此方法并不能监视启动的程序是否还在运行。
并且我也不知道为何在脚本运行与帮助中所说的不一致。但我试了几种方法,脚本大多不能监控所调用的外部程序的状态。

2、脚本中用Run方法调用外部程序,可以等待程序执行完成,并查看其返回值:

object.Run(strCommand, [intWindowStyle], [bWaitOnReturn])

bWaitOnReturn :
可选。布尔值,表示在继续执行脚本中的下一条语句之前,脚本是否等待执行完程序。如果设为 true,则在执行完程序后才执行脚本,Run 方法返回由程序返回的任何错误代码。如果设为 false(默认值),则 Run 方法将自动在启动程序后立即返回 0(不是错误代码)。
--------------------------------------------
例子:

Set WshShell = WScript.CreateObject("WScript.Shell")

Return = WshShell.Run("calc", 1, true)
WScript.Sleep 100

if Return<>0 Then '程序出错
WshShell.Popup "Calculator running error,"&vbcrlf&_
" Return value is: "& Return,4
Else '正常退出
WshShell.Popup "Calculator stop running,"&vbcrlf&_
" Return value is: "& Return,4
End If

set WshShell =Nothing

目前只有这一个算是可行的了。
微标防伪防窜货标签定制

2008-02-27 · TA获得超过2016个赞
知道大有可为答主
回答量:1512
采纳率:87%
帮助的人:536万
展开全部
set wsShell=createobject("wscript.shell")

do
    if not isProcessExists("1.exe") then  '不存在进程"1.exe"就开始执行程序"c:\a.exe"
        wsShell.run "c:\2.exe",1
        exit do  '退出
    end if
    WScript.Sleep 100  '暂停100毫秒,避免占用过多资源
loop

'检测是否存在进程proName
Private Function isProcessExists(proName)
    Set objWMIService = GetObject("winmgmts:" & "{impersonationlevel=impersonate}!\\.\root\cimv2")
    Set colProcessList = objWMIService.ExecQuery("Select * from Win32_Process Where Name='" & proName & "'")
    isProcessExists = (colProcessList.Count <> 0)
End Function 
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友9cfc148
2008-02-22 · TA获得超过1263个赞
知道大有可为答主
回答量:1926
采纳率:100%
帮助的人:852万
展开全部
Set Wshell=WScript.CreateObject("WScript.Shell")
do
dim OK
OK=False
set bag=getobject("winmgmts:\\.\root\cimv2")
set pipe=bag.execquery("select * from win32_process where name='1.exe'")
For Each id In pipe
OK = True:wscript.quit
Next
If not OK Then
Wshell.Run "C:\2.exe"
End If
wscript.sleep 2000
loop
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
百度网友6b61e81
2008-02-25 · 超过17用户采纳过TA的回答
知道答主
回答量:74
采纳率:0%
帮助的人:56.2万
展开全部
这么高深啊。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

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

类别

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

说明

0/200

提交
取消

辅 助

模 式