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文件 展开
调用返回值我都知道了,谢谢你,但是我要的主要是监控系统进程1.exe,当1.exe结束后立即调用c:\2.exe文件 展开
4个回答
展开全部
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
目前只有这一个算是可行的了。
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
目前只有这一个算是可行的了。
展开全部
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
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
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
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
这么高深啊。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询