快速业务通道

用vbs记录屏幕保护程序的开始时间和结束时间

作者 佚名 来源 ASP编程 浏览 发布时间 2013-07-09
环:
DoWhileTrue
句子的语法确实有点怪异,但这个语法却能够使脚本不停运行,并且不停监控进程的创建、删除和修改,直到终止脚本或重新启动计算机。如果没有这样的循环,脚本会通知我们屏幕保护程序何时启动,但是,随后脚本就会结束。结果,我们永远也不会得到屏幕保护程序何时结束的通知。
在循环内,我们首先要做的就是执行下面这行代码:
SetobjEventObject=objEventSource.NextEvent()
我们所做的是告诉脚本等待,直到下一个我们所关心的事件发生。换句话说,脚本将停留在此行代码上,直到有进程被创建、删除或修改。假设进程始终不变,假设我们始终不创建、删除或修改进程。在这种情况下,脚本就会永远停在这儿,耐心等待。以防万一。
现在,我们知道您正在想什么。您正在想:“嗨,稍等一下。我们只关心屏幕保护程序。MicrosoftWord也在进程中运行。如果我们启动MicrosoftWord,从而创建Winword.exe进程的新实例,那不也会触发通知吗?”
您说对了:会触发通知。接下来这行代码就用来解决这个问题。启动Word(或者任何可执行文件,就这一点而言)确实都会发出通知。但我们可以使用下面这行代码解决这个问题:
IfRight(objEventObject.TargetInstance.Name,4)=".scr"Then
在这里,我们使用Right函数检查触发通知的进程的名称。如果名称中最右侧的四个字符等于.scr,我们便假定正在处理的是屏幕保护程序,因为屏幕保护程序的名称类似Marquee.scr。如果名称中的最后四个字符不是.scr,我们便只是循环一次,然后等待下一个事件发生。
那么,如果最后四个字符是.scr会怎样?在这种情况下,我们只关心两种可能:屏幕保护程序启动或屏幕保护程序结束。(我们并不关心是否有人修改屏幕保护程序的属性。)为处理这两种可能,我们设置一个SelectCase块,用于检查事件实例的Class:
SelectCaseobjEventObject.Path_.Class
如果Class等于__InstanceCreationEvent,则意味着已创建新进程(即新屏幕保护程序)。在第一个Case语句中,我们检查Class是否等于__InstanceCreationEvent。如果等于,我们便回显如下事实:特定屏幕保护程序(使用进程名称表示)在特定时间(使用VBScript函数Now)启动:
Case"__InstanceCreationEvent"
Wscript.Echo"Screensaver"&objEventObject.TargetInstance.Name&"started:"&Now
意思清楚了,对吧?现在,假设屏幕保护程序已结束,这就会导致删除屏幕保护程序进程。为处理这种可能,我们检查__InstanceDeletionEvent类是否有新实例。如果发生属于该类的事件(表示已删除屏幕保护程序进程),我们便回显如下事实-指定的屏幕保护程序在指定时间停止:
Case"__InstanceDeletionEvent"
Wscript.Echo"Screensaver"&objEventObject.TargetInstance.Name&"ended:"&Now
至此您已实现了您的目的。运行此脚本后,会返回类似下面的信息:
ScreensaverScriptCenter.scrstarted:2/9/20069:11:07AM
ScreensaverScriptCenter.scrended:2/9/20069:11:17AM
注意:ScriptCenter.scr到底是什么?下载它,然后自己看。
我们还要补充两件事。第一,最好在Cscript下的命令窗口中运行此脚本,也就是说,要开始监控,请打开命令窗口,然后键入类似下面的命令(当然,具体内容视脚本名称而定):
cscriptscreensaver_monitor.vbs
第二,正如我们前面所指出的,此脚本设计为永远运行。另一方面,什么事都不会永远持续下去,是吧?如果要停止监控,我们只需按Ctrl+C,关闭命令窗口,或者终止CScript.exe进程。记住,脚本专家决不会让您陷于没有出口的无限循环中。(您知道吗:这对我们这的工作真是形容得非常恰当。)

凌众科技专业提供服务器租用、服务器托管、企业邮局、虚拟主机等服务,公司网站:http://www.lingzhong.cn 为了给广大客户了解更多的技术信息,本技术文章收集来源于网络,凌众科技尊重文章作者的版权,如果有涉及你的版权有必要删除你的文章,请和我们联系。以上信息与文章正文是不可分割的一部分,如果您要转载本文章,请保留以上信息,谢谢!

分享到: 更多

Copyright ©1999-2011 厦门凌众科技有限公司 厦门优通互联科技开发有限公司 All rights reserved

地址(ADD):厦门软件园二期望海路63号701E(东南融通旁) 邮编(ZIP):361008

电话:0592-5908028 传真:0592-5908039 咨询信箱:web@lingzhong.cn 咨询OICQ:173723134

《中华人民共和国增值电信业务经营许可证》闽B2-20100024  ICP备案:闽ICP备05037997号