中国DOS联盟

-- 联合DOS 推动DOS 发展DOS --

联盟域名:www.cn-dos.net 论坛域名:www.cn-dos.net/forum
DOS,代表着自由开放与发展,我们努力起来,学习FreeDOS和Linux的自由开放与GNU精神,共同创造和发展美好的自由与GNU GPL世界吧!

中国DOS联盟论坛
现在时间是 2026-06-24 01:53
中国DOS联盟论坛 » DOS批处理 & 脚本技术(批处理室) » 求一个vbs监视脚本! 查看 826 回复 7
楼 主 求一个vbs监视脚本! 发表于 2009-12-14 10:47 ·  中国 湖北 武汉 电信
初级用户
★★
积分 126
发帖 53
注册 2007-04-03 12:33
19年会员
UID 83832
性别 男
状态 离线
求这样一个功能的vbs(以前在那里看到过,现在实在找不到了!):
每当打开一个程序的时候,检查该程序是不是文本文件中规定的程序,是的话就关闭它!(好象要用到wmi里的一个什么创建事件)。
2 发表于 2009-12-14 12:47 ·  中国 湖北 荆门 电信
初级用户
★★
积分 186
发帖 117
注册 2006-08-14 14:50
19年会员
UID 60491
状态 离线
同步的:
    sProcess = "iexplore.exe"
Set oWMI = GetObject("Winmgmts:")
Set oExec = oWMI.ExecNotificationQuery( _
"Select * From __instanceCreationEvent " & _
"WithIn 1 Where TargetInstance ISA 'Win32_Process'")
Do
Set oNextEvent = oExec.NextEvent
sName = oNextEvent.TargetInstance.Name
If sProcess = LCase(sName) Then
MsgBox sName
End If
Loop

不过不好用,可能会漏,还不如自己查询:
Do
For Each x In GetObject("Winmgmts:Win32_Process").Instances_
If "iexplore.exe" = LCase(x.Name) Then
WScript.Echo x.Name
End If
Next
WScript.Sleep 200
Loop

这个我在CSDN也帮人解答过,刚好直接转过来。
本帖最近评分记录 (共 1 条) 点击查看详情
评分人分数时间
moniuming +9 2009-12-15 09:36
3 发表于 2009-12-14 13:07 ·  中国 广东 东莞 电信
贫困用户
积分 -5
发帖 7
注册 2009-11-26 11:25
16年会员
UID 155376
性别 女
状态 离线
奸视什么???
4 谢谢,解决了! 发表于 2009-12-14 14:31 ·  中国 湖北 武汉 电信
初级用户
★★
积分 126
发帖 53
注册 2007-04-03 12:33
19年会员
UID 83832
性别 男
状态 离线
thanks,我试过了,这2个脚本都能实现,不过第二个脚本占用cpu资源比第一个高多了!
5 发表于 2009-12-14 16:15 ·  中国 湖北 荆门 电信
初级用户
★★
积分 186
发帖 117
注册 2006-08-14 14:50
19年会员
UID 60491
状态 离线
Originally posted by wfyinghun at 2009-12-14 14:31:
thanks,我试过了,这2个脚本都能实现,不过第二个脚本占用cpu资源比第一个高多了!

因为第二个sleep的时间比较短,另外每次执行的时候要重新查询,当然资源高一些.
你可以把sleep更改为1000,每1秒查询一次,那样会低一些.
6 发表于 2009-12-14 16:27 ·  中国 湖北 荆门 电信
初级用户
★★
积分 186
发帖 117
注册 2006-08-14 14:50
19年会员
UID 60491
状态 离线

Set oWMI = GetObject("Winmgmts:")
Set oRefresher = CreateObject("WbemScripting.SWbemRefresher")
Set colProcess = oRefresher.AddEnum(oWMI,"Win32_Process").ObjectSet

Do
oRefresher.Refresh
For Each x In colProcess
WScript.Echo x.Name
Next
WScript.Sleep 200
Loop

试试这个,理论上来说应该比那个要节省一些资源,sleep时间你可以自己调整。
7 弱弱问一下 发表于 2009-12-14 22:32 ·  中国 湖北 武汉 电信
初级用户
★★
积分 126
发帖 53
注册 2007-04-03 12:33
19年会员
UID 83832
性别 男
状态 离线
以前学的东西忘了很多了,弱弱的问一下,怎么样修改代码使它结束进程而不是显示进程名字,把MsgBox sName或者wscript echo x.name 换成什么?
8 记起来了! 发表于 2009-12-14 22:36 ·  中国 湖北 武汉 电信
初级用户
★★
积分 126
发帖 53
注册 2007-04-03 12:33
19年会员
UID 83832
性别 男
状态 离线
Originally posted by wfyinghun at 2009-12-14 10:32 PM:
以前学的东西忘了很多了,弱弱的问一下,怎么样修改代码使它结束进程而不是显示进程名字,把MsgBox sName或者wscript echo x.name 换成什么?



呵呵,我已经记起来了,用terminate方法!
论坛跳转: