vbs当计算机重启,用vbs实现重新启动 Internet Explorer
用vbs實現重新啟動 Internet Explorer
2007-03-25 00:00:00 作者:
用vbs實現重新啟動 Internet Explorer
問:
您好,腳本專家!如果未運行其他實例,如何重新啟動?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?分鐘檢查一次他們是否在工作:畢竟,有沒有腳本,您都知道該問題的答案。
總結
以上是生活随笔為你收集整理的vbs当计算机重启,用vbs实现重新启动 Internet Explorer的全部內容,希望文章能夠幫你解決所遇到的問題。
                            
                        - 上一篇: 近世代数——Part2 群:基础与子群
 - 下一篇: python如何截长图_Python网页