当前位置: 首页 > 图文教程 > 脚本技术 > VBScript > 用vbs实现重新启动 Internet Explorer

VBScript
一个实现VBS倒计时的代码
用vbs实现将剪切板的unix格式的内容处理成pc格式的代码
用vb和vbs 破解flashxp的密码的代码
用VBS实现的批量gb2312转utf-8,支持拖动
用vbs实现的XP序列号替换器
VBS可以做什么的简单说明
用vbs实现cmd功能的代码
VBS基础编程教程 (第1篇)
VBS基础编程教程 (第3篇)
VBS基础编程教程 (第4篇)
VBS基础编程教程 (第5篇)
VBS基础编程教程 (第6篇)
利用vbscript的for命令实现定时关机
在桌面右下角出现温馨提示的vbs冒泡程序
利用VBS发送邮件 挑选速度快的肉鸡做VPN 的vbs代码
vbs教程 chm下载
用vbs实现的简单的服务器文件备份办法压缩文件名自动按日期命名
输入mdb数据库即可将打包的mdb文件解包
VBS编程教程第一部
vbs脚本 加密 几个小细节小结下

VBScript 中的 用vbs实现重新启动 Internet Explorer


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-09-11   浏览: 248 ::
收藏到网摘: n/a

问:
您好,脚本专家!如果未运行其他实例,如何重新启动 Internet Explorer?
-- MT
答:
您好,MT。多谢您的问题。您知道,如今每个人都在挑剔可怜的 Internet Explorer 的毛病(尽管大多数 Windows 用户仍在使用 Internet Explorer)。但现在有人提出了一个问题,他想确保 Internet Explorer 始终正常运行。看见了吧,Internet Explorer:还有人喜欢你!
尽管我们本来要为 Internet Explorer 而感到高兴的,但我们不得不承认这个问题使我们有些为难。毕竟,可通过多种不同的方法来解决此问题,这取决于您是需要立即重新启动 Internet Explorer 还是要等一会再启动它。对此问题沉思片刻之后,我们决定按我们通常所采取的办法去做:采用最简单的解决办法,在本示例中,每 60 秒检查一次是否有任何 Internet Explorer 实例正在运行。如果有,则脚本只返回到休眠状态,再等待 60 秒,然后重新检查。如果没有任何运行的 Internet Explorer 实例,则脚本将启动 Internet Explorer 的新副本,然后休眠片刻,再等待 60 秒,之后重新检查。
是的,这有点类似于脚本专家一天的工作。嗯,您知道我们是什么意思吗?不同之处就是每 60 秒即醒来一次以便干点什么。
以下是我们所提供的脚本:
复制代码 代码如下:

strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set objShell = CreateObject("Wscript.Shell")
Do While True
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'iexplore.exe'")
If colProcesses.Count = 0 Then
objShell.Run "iexplore.exe"
End If
Wscript.Sleep 60000
Loop

没错:它实质上只是个普通的 WMI 脚本。因此,它首先连接到本地计算机上的 WMI 服务。但是该脚本与其他 WMI 脚本之间存在一个主要的不同之处。通常此时我们会说:“不过,您也可以针对远程计算机运行此脚本”。遗憾的是,这一次并非如此。从技术上讲,您可以针对远程计算机运行该脚本,但您启动的任何 Internet Explorer 实例都将在不可见的窗口中运行(至少在 Windows XP 和 Windows Server 2003 上是这样),因此,您将无法在屏幕上看到它。这是操作系统中内置的一种安全功能:远程启动的进程始终在隐藏窗口中运行。也就是说,该脚本必须在本地计算机上运行。
注意:这个问题有解决办法吗?事实上有解决办法,尽管它要求您本地而不是远程启动进程。有关如何解决该问题的示例,请参阅您好,脚本专家!专栏。
连接到 WMI 服务后,我们就创建一个 WScript.Shell 对象的实例,我们将使用它来生成所有新的 Internet Explorer 实例。(是的,我们本来可以使用 WMI 来实现此目的的,但大多数人都发现使用 Wscript.Shell 运行程序要比使用 WMI 更容易。)接着我们建立一个只要 True 等于 True 时即运行的 Do 循环。(除非哲学上有任何新的进展,否则这就意味着脚本将永远运行下去。要停止该脚本,需要终止脚本进程。如果您正运行在 CScrip 下的命令窗口中,只需按 Ctrl+C 或关闭命令窗口即可实现此操作,非常容易。)
那么此循环执行什么操作?首先,我们使用以下代码来检索当前在计算机上运行的所有名为 iexplore.exe 的进程集合:
Set colProcesses = objWMIService.ExecQuery _
("Select * from Win32_Process Where Name = 'iexplore.exe'")
尽管会失去悬念,但还是要与当前在计算机上运行的所有 Internet Explorer 实例的集合保持一致。然后,我们检查 Count 属性(该属性可告诉我们集合中的项数)的值是否等于 0:
If colProcesses.Count = 0 Then
如果 Count 等于 0,则表示计算机上未运行任何 Internet Explorer 实例。因此,我们使用 Shell 对象和 Run 方法来启动一个全新的实例:
objShell.Run "iexplore.exe"
就是这样。接下来,使用 Sleep 方法将脚本暂停 60 秒(60,000 毫秒)。60 秒之后,脚本继续执行,再次循环并重复该过程,直至永远。如果所需时间间隔不是 60 秒,调整该值即可。例如,下面这行代码将每 30 秒(30,000 毫秒)进行一次检查:
Wscript.Sleep 30000
下面的代码将每 10 分钟(60,000 毫秒/每分钟乘以 10 分钟)运行一次检查:
Wscript.Sleep 600000
不可否认,该代码仅每 10 分钟检查一次 Internet Explorer 是否在工作。对于脚本专家来说,就没有必要再每 10 分钟检查一次他们是否在工作:毕竟,有没有脚本,您都知道该问题的答案。