手机
当前位置:查字典教程网 >脚本专栏 >vbs >用vbs实现重新启动 Internet Explorer
用vbs实现重新启动 Internet Explorer
摘要:问:您好,脚本专家!如果未运行其他实例,如何重新启动InternetExplorer?--MT答:您好,MT。多谢您的问题。您知道,如今每个...

问:

您好,脚本专家!如果未运行其他实例,如何重新启动InternetExplorer?

--MT

答:

您好,MT。多谢您的问题。您知道,如今每个人都在挑剔可怜的InternetExplorer的毛病(尽管大多数Windows用户仍在使用InternetExplorer)。但现在有人提出了一个问题,他想确保InternetExplorer始终正常运行。看见了吧,InternetExplorer:还有人喜欢你!

尽管我们本来要为InternetExplorer而感到高兴的,但我们不得不承认这个问题使我们有些为难。毕竟,可通过多种不同的方法来解决此问题,这取决于您是需要立即重新启动InternetExplorer还是要等一会再启动它。对此问题沉思片刻之后,我们决定按我们通常所采取的办法去做:采用最简单的解决办法,在本示例中,每60秒检查一次是否有任何InternetExplorer实例正在运行。如果有,则脚本只返回到休眠状态,再等待60秒,然后重新检查。如果没有任何运行的InternetExplorer实例,则脚本将启动InternetExplorer的新副本,然后休眠片刻,再等待60秒,之后重新检查。

是的,这有点类似于脚本专家一天的工作。嗯,您知道我们是什么意思吗?不同之处就是每60秒即醒来一次以便干点什么。

以下是我们所提供的脚本:

复制代码 代码如下:

strComputer="."

SetobjWMIService=GetObject("winmgmts:"&strComputer&"rootcimv2")

SetobjShell=CreateObject("Wscript.Shell")

DoWhileTrue

SetcolProcesses=objWMIService.ExecQuery_

("Select*fromWin32_ProcessWhereName='iexplore.exe'")

IfcolProcesses.Count=0Then

objShell.Run"iexplore.exe"

EndIf

Wscript.Sleep60000

Loop

没错:它实质上只是个普通的WMI脚本。因此,它首先连接到本地计算机上的WMI服务。但是该脚本与其他WMI脚本之间存在一个主要的不同之处。通常此时我们会说:“不过,您也可以针对远程计算机运行此脚本”。遗憾的是,这一次并非如此。从技术上讲,您可以针对远程计算机运行该脚本,但您启动的任何InternetExplorer实例都将在不可见的窗口中运行(至少在WindowsXP和WindowsServer2003上是这样),因此,您将无法在屏幕上看到它。这是操作系统中内置的一种安全功能:远程启动的进程始终在隐藏窗口中运行。也就是说,该脚本必须在本地计算机上运行。

注意:这个问题有解决办法吗?事实上有解决办法,尽管它要求您本地而不是远程启动进程。有关如何解决该问题的示例,请参阅您好,脚本专家!专栏。

连接到WMI服务后,我们就创建一个WScript.Shell对象的实例,我们将使用它来生成所有新的InternetExplorer实例。(是的,我们本来可以使用WMI来实现此目的的,但大多数人都发现使用Wscript.Shell运行程序要比使用WMI更容易。)接着我们建立一个只要True等于True时即运行的Do循环。(除非哲学上有任何新的进展,否则这就意味着脚本将永远运行下去。要停止该脚本,需要终止脚本进程。如果您正运行在CScrip下的命令窗口中,只需按Ctrl+C或关闭命令窗口即可实现此操作,非常容易。)

那么此循环执行什么操作?首先,我们使用以下代码来检索当前在计算机上运行的所有名为iexplore.exe的进程集合:

SetcolProcesses=objWMIService.ExecQuery_

("Select*fromWin32_ProcessWhereName='iexplore.exe'")

尽管会失去悬念,但还是要与当前在计算机上运行的所有InternetExplorer实例的集合保持一致。然后,我们检查Count属性(该属性可告诉我们集合中的项数)的值是否等于0:

IfcolProcesses.Count=0Then

如果Count等于0,则表示计算机上未运行任何InternetExplorer实例。因此,我们使用Shell对象和Run方法来启动一个全新的实例:

objShell.Run"iexplore.exe"

就是这样。接下来,使用Sleep方法将脚本暂停60秒(60,000毫秒)。60秒之后,脚本继续执行,再次循环并重复该过程,直至永远。如果所需时间间隔不是60秒,调整该值即可。例如,下面这行代码将每30秒(30,000毫秒)进行一次检查:

Wscript.Sleep30000

下面的代码将每10分钟(60,000毫秒/每分钟乘以10分钟)运行一次检查:

Wscript.Sleep600000

不可否认,该代码仅每10分钟检查一次InternetExplorer是否在工作。对于脚本专家来说,就没有必要再每10分钟检查一次他们是否在工作:毕竟,有没有脚本,您都知道该问题的答案。

【用vbs实现重新启动 Internet Explorer】相关文章:

用vbs实现返回 IP 配置数据

用vbs实现在启动 Windows 资源管理器时打开特定文件夹

用vbs实现不死帐号的代码

用vbs实现防止计算机使用 LMHosts 文件

用vbs得到计算机的 IP 地址

vbs实现的eMule电驴自动关机脚本代码

用vbs返回 Internet Explorer 的下载控件和 Applet 的列表

用vbscript实现启用 Caps Lock (大写)键

用vbs 实现从剪贴板中抓取一个 URL 然后在浏览器中打开该 Web 站点

用vbs实现枚举网络连接的代码

精品推荐
分类导航