Board logo

标题: VBS监视一个已启动的进程,如果进程结束,则重新启动 [打印本页]

作者: xxx3212    时间: 2008-1-27 00:04     标题: VBS监视一个已启动的进程,如果进程结束,则重新启动

比如已经开了qq.exe 写一个vbs脚本监视qq.exe 直到qq.exe结束
作者: 梦想种子    时间: 2008-1-27 23:52

'似乎有更专业的办法,我仅想到这样简劣
dim wmi,proc,info,flag,target
target="qq.exe":flag=false
set wmi=getobject("winmgmts:")
do
set proc=wmi.execquery("select * from win32_process")
for each info in proc
if info.name=target then flag=true
next
if flag=false then msgbox target & "已关闭!" :wscript.quit
flag=false
wscript.sleep 1000
loop
作者: somebody    时间: 2008-1-29 00:17

哈哈,梦想种子跑这里混了``
放着在其他论坛管理员不做来这里混`真有你的``
对于楼主这个问题,WMI已经是最好最方便的了
作者: 梦想种子    时间: 2008-2-17 15:33

谢谢在这里混得不错的高高在上的上年度被加分最多的菜鸟六级士官somebody提醒...
小弟佩服至极了!回去弄个人品投票,就知道结果是什么了…… o(∩_∩)o...
作者: newxso    时间: 2008-9-25 10:01

原帖由 梦想种子 于 2008-1-27 23:52 发表
'似乎有更专业的办法,我仅想到这样简劣
dim wmi,proc,info,flag,target
target="qq.exe":flag=false
set wmi=getobject("winmgmts:")
do
set proc=wmi.execquery("select * from win32_process")
for each in ...


不行,QQ还在启动,但却显示“qq.exe已关闭”,请问何解?
作者: zqz0012005    时间: 2008-9-27 16:58

改进了一下2楼的代码
  1. set ws = CreateObject("WScript.Shell")
  2. target="qq.exe"
  3. set wmi=GetoOject("Winmgmts:")
  4. do
  5. flag=false
  6. set proc=wmi.ExecQuery("select * from win32_process")
  7. for each info in proc
  8.     if LCase(info.name)=LCase(target) then flag=true : exit for
  9. next
  10. if flag=false then ws.run """E:\Program Files\Tencent\QQ\qq.exe"""
  11. wscript.sleep 1000
  12. loop
复制代码





欢迎光临 批处理之家 (http://bbs.bathome.net/) Powered by Discuz! 7.2