回答百度知道问题:
http://zhidao.baidu.com/question/713784585787480605
问题:
vbs,系统后台持续检测一个进程是否存在,如:qq.exe。如果存在,倒计时X秒将其关闭,如果不存在,继续后台检测。检测时间间隔可设置。
01 | Const INTERVA = 5 '检测间隔 |
02 | dim ps,ps_str |
03 | Set objShell = createobject( "wscript.shell" ) |
04 | |
05 | REM 解决CMD黑色闪运行 |
06 | REM 参考<a href= "http://demon.tw/programming/vbs-run-and-exec.html?replytocom=1928" target= "_blank" >http://demon.tw/programming/vbs-run-and-exec.html?replytocom=1928</a> |
07 | host = WScript.FullName |
08 | If LCase(Right(host, 11)) = "wscript.exe" Then |
09 | objShell.run "cscript " "" & WScript.ScriptFullName & chr(34), 0 |
10 | WScript.Quit |
11 | End If |
12 | REM ----------------------------------------------------------------------- |
13 | |
14 | do while true |
15 | Set ps = objShell.Exec( "tasklist" ) |
16 | ps_str = ps.Stdout.ReadAll |
17 | 'msgbox ps_str |
18 | if find_yn(ps_str) then |
19 | objShell.Popup "5秒后将关闭 QQ !" , 5, "Close QQ" |
20 | Set ps = objShell.Exec( "taskkill /F /IM QQ.exe /T" ) '测试程序 |
21 | end if |
22 | wscript.sleep 1000 * INTERVA '检测间隔 |
23 | loop |
24 | set ps = nothing |
25 | set objShell = nothing |
26 | |
27 | |
28 | Function find_yn(str_s) '查找进程是否存在,不存在返回0 |
29 | Dim re,ms,m |
30 | find_yn = 0 |
31 | set re = New RegExp |
32 | re.Global = True |
33 | re.MultiLine = True |
34 | 're.Pattern = "^(QQa|QQb|QQ).exe" '可以检测查看多个进程 |
35 | re.Pattern = "^QQ.exe" '测试查找进程 |
36 | set ms = re.Execute(str_s) |
37 | For Each m In ms |
38 | 'msgbox m |
39 | find_yn = find_yn + 1 |
40 | Next |
41 | End Function |