用vbs实现重新启动 Internet Explorer
程序员文章站
2022-03-07 07:59:11
问: 您好,脚本专家!如果未运行其他实例,如何重新启动 internet explorer? -- mt 答: 您好,mt。多谢您的问题。您知...
问:
您好,脚本专家!如果未运行其他实例,如何重新启动 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 分钟检查一次他们是否在工作:毕竟,有没有脚本,您都知道该问题的答案。
您好,脚本专家!如果未运行其他实例,如何重新启动 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 分钟检查一次他们是否在工作:毕竟,有没有脚本,您都知道该问题的答案。
上一篇: php怎么将float转换成int类型
下一篇: Node.js断点续传的实现