用vbs將輸出內(nèi)容寫到屏幕以覆蓋當(dāng)前屏幕上的內(nèi)容的方法
問:
您好,腳本專家!如何將輸出內(nèi)容寫到屏幕以覆蓋當(dāng)前屏幕上的內(nèi)容?
-- KM
答:
您好,KM。如果您確實(shí)需要將輸出內(nèi)容寫到命令窗口,那么,我們沒辦法給您提供答案:盡管我們多少已經(jīng)處理過一些問題,但我們從未找到一種簡(jiǎn)單、直接的方法可覆蓋命令窗口中的信息。
不過,如果您要將信息輸出到 Internet Explorer 窗口,那么我們還確實(shí)有解決辦法。而且馬上就可以給出答案:
Set objExplorer = CreateObject("InternetExplorer.Application")
objExplorer.Navigate "about:blank"
objExplorer.ToolBar = 0
objExplorer.StatusBar = 0
objExplorer.Width = 400
objExplorer.Height = 200
objExplorer.Left = 0
objExplorer.Top = 0
Do While (objExplorer.Busy)
Wscript.Sleep 200
Loop
objExplorer.Document.Title = "Process Information"
objExplorer.Visible = 1
objExplorer.Document.Body.InnerHTML = "Retrieving process information."
Wscript.Sleep 2000
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Process")
For Each objItem in colItems
objExplorer.Document.Body.InnerHTML = objItem.Name
Wscript.Sleep 500
Next
objExplorer.Document.Body.InnerHTML = "Process information retrieved."
Wscript.Sleep 3000
objExplorer.Quit
看上去確實(shí)有點(diǎn)長(zhǎng),但其實(shí)非常簡(jiǎn)單,這一點(diǎn)您很快就會(huì)發(fā)現(xiàn)。例如,乍一看,這段代碼可能挺恐怖:
Set objExplorer = CreateObject("InternetExplorer.Application")
objExplorer.Navigate "about:blank"
objExplorer.ToolBar = 0
objExplorer.StatusBar = 0
objExplorer.Width = 400
objExplorer.Height = 200
objExplorer.Left = 0
objExplorer.Top = 0
不過,事實(shí)證明,我們所做的只是創(chuàng)建一個(gè) Internet Explorer 的空實(shí)例;而且,這是通過前兩行代碼完成的。其余代碼行只是配置 Internet Explorer 窗口的各種屬性而已:我們?cè)O(shè)置寬度為 400 像素,隱藏工具欄,然后將 Internet Explorer 窗口定位在屏幕的左上角。如果愿意使用 Internet Explorer 窗口的默認(rèn)配置,則可跳過 3 到 8 行。
設(shè)置完 Internet Explorer 窗口之后,我們使用下面的 Do While 循環(huán),在完全載入 Internet Explorer 后中止該腳本:
Do While (objExplorer.Busy)
Wscript.Sleep 200
Loop
看到了嗎?還算不錯(cuò)。啟動(dòng)并運(yùn)行 Internet Explorer 后,接下來為 Internet Explorer 窗口指定一個(gè)標(biāo)題,并將 Visible 屬性設(shè)置為 True (1)。我們這么做的原因是,迄今為止,Internet Explorer 還在隱藏窗口中運(yùn)行,在屏幕上看不到。不過下面的代碼可解決這個(gè)小問題:
objExplorer.Document.Title = "Process Information"
objExplorer.Visible = 1
現(xiàn)在我們準(zhǔn)備在窗口中寫點(diǎn)什么。對(duì)于此示例腳本,就像下面的代碼那樣簡(jiǎn)單:
objExplorer.Document.Body.InnerHTML = "Retrieving process information."
正如您所看到的那樣,我們只是賦給 Document.Body 對(duì)象的 InnerHTML 屬性一個(gè)值。這種情況下,我們僅為 InnerHTML 賦予一些文本:檢索進(jìn)程信息。不過,我們可以很容易地添加一些 HTML 標(biāo)記并創(chuàng)建更為獨(dú)特的輸出。例如,此行代碼會(huì)將寫到窗口中的文本加粗:
objExplorer.Document.Body.InnerHTML = "<B>Retrieving process information.</B>"
好吧,或許這與設(shè)想并不完全相符。但您已經(jīng)得到問題的答案了。
在 Internet Explorer 窗口中顯示我們的文本字符串之后,我們便可將該腳本中止 2 秒(2000 毫秒)。沒有什么原因必須要這樣做,只是這樣您就能在覆蓋原來的文本之前看到它們。
接下來是下面這段代碼:
strComputer = "."
Set objWMIService = GetObject("winmgmts:\\" & strComputer & "\root\cimv2")
Set colItems = objWMIService.ExecQuery("Select * from Win32_Process")
For Each objItem in colItems
objExplorer.Document.Body.InnerHTML = objItem.Name
Wscript.Sleep 500
Next
我們只需檢索本地計(jì)算機(jī)上運(yùn)行的進(jìn)程集合。這并不十分重要;我們只是需要通過運(yùn)行該腳本而得到一些有趣的結(jié)果。我們今天所關(guān)心的是在我們建立的用來遍歷該集合中所有項(xiàng)的 For Each 循環(huán)內(nèi)將會(huì)發(fā)生什么:
For Each objItem in colItems
objExplorer.Document.Body.InnerHTML = objItem.Name
Wscript.Sleep 500
Next
在多數(shù) WMI 腳本中,我們?cè)?nbsp;For Each 循環(huán)內(nèi)回顯屬性值(例如,Name)。不過在此,我們不使用 Wscript.Echo,而是將集合中第一個(gè)進(jìn)程的名稱分配給腳本主體的 InnerHTML 屬性:
objExplorer.Document.Body.InnerHTML = objItem.Name
這樣做會(huì)有什么結(jié)果呢?將使用集合中第一個(gè)進(jìn)程的名稱覆蓋 Internet Explorer 窗口的現(xiàn)有內(nèi)容。例如,我們要開始循環(huán)時(shí),Internet Explorer 窗口中將含有以下文本:
檢索進(jìn)程信息。
當(dāng)我們啟動(dòng)循環(huán)后,這段文本將被替換為集合中第一個(gè)進(jìn)程的名稱。例如:
Winword.exe。
覆蓋窗口中的內(nèi)容后,我們將腳本中止半秒(500 毫秒)。再次強(qiáng)調(diào)一下,這并不是必須要做的事情;我們這樣做只是為了減緩腳本速度,以便您能看到顯示的第一個(gè)進(jìn)程的名稱。半秒后,進(jìn)入下一個(gè)循環(huán)并檢索關(guān)于集合中第二個(gè)進(jìn)程的信息。之后,該腳本將用第二個(gè)進(jìn)程的名稱替換 Internet Explorer 窗口中的現(xiàn)有內(nèi)容(從技術(shù)角度上講,是賦給 InnerHTML 屬性的值),然后以此類推。
在遍歷整個(gè)集合后,我們指示該腳本已結(jié)束,中止 3 秒,然后關(guān)閉 Internet Explorer 窗口:
objExplorer.Document.Body.InnerHTML = "Process information retrieved."
Wscript.Sleep 3000
objExplorer.Quit
運(yùn)行效果很不錯(cuò),而且非常簡(jiǎn)單。因?yàn)樗褂?nbsp;HTML,這意味著您盡可以使輸出如您所愿;事實(shí)上,您甚至可以使 Internet Explorer 窗口的外觀像命令窗口一樣。如果這還不夠酷,那,我們也不知道怎樣才算酷了。(事實(shí)上,正如一個(gè)腳本專家兒子經(jīng)常提醒他的腳本專家父親的那樣,我們不知道什么是酷。)
上一篇:用VBS實(shí)現(xiàn)腳本結(jié)束進(jìn)程與防止進(jìn)程啟動(dòng)
欄 目:vb
本文標(biāo)題:用vbs將輸出內(nèi)容寫到屏幕以覆蓋當(dāng)前屏幕上的內(nèi)容的方法
本文地址:http://mengdiqiu.com.cn/a1/vb/7922.html
您可能感興趣的文章
- 01-10下載文件到本地運(yùn)行的vbs
- 01-10VBS中的正則表達(dá)式的用法大全 <font color=red>原創(chuàng)&
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10VBScript教程 第十一課深入VBScript
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript語(yǔ)法速查及實(shí)例說明
- 01-10VBS中Select CASE的其它用法
- 01-10VBScript教程 第七課使用條件語(yǔ)句
- 01-10vbscript 可以按引用傳遞參數(shù)嗎?
- 01-10VBScript教程 第二課在HTML頁(yè)面中添加VBscript代碼


閱讀排行
- 1C語(yǔ)言 while語(yǔ)句的用法詳解
- 2java 實(shí)現(xiàn)簡(jiǎn)單圣誕樹的示例代碼(圣誕
- 3利用C語(yǔ)言實(shí)現(xiàn)“百馬百擔(dān)”問題方法
- 4C語(yǔ)言中計(jì)算正弦的相關(guān)函數(shù)總結(jié)
- 5c語(yǔ)言計(jì)算三角形面積代碼
- 6什么是 WSH(腳本宿主)的詳細(xì)解釋
- 7C++ 中隨機(jī)函數(shù)random函數(shù)的使用方法
- 8正則表達(dá)式匹配各種特殊字符
- 9C語(yǔ)言十進(jìn)制轉(zhuǎn)二進(jìn)制代碼實(shí)例
- 10C語(yǔ)言查找數(shù)組里數(shù)字重復(fù)次數(shù)的方法
本欄相關(guān)
- 01-10下載文件到本地運(yùn)行的vbs
- 01-10飄葉千夫指源代碼,又稱qq刷屏器
- 01-10SendKeys參考文檔
- 01-10什么是一個(gè)高效的軟件
- 01-10VBS中的正則表達(dá)式的用法大全 &l
- 01-10exe2swf 工具(Adodb.Stream版)
- 01-10VBS中SendKeys的基本應(yīng)用
- 01-10用VBSCRIPT控制ONSUBMIT事件
- 01-10VBScript教程 第十一課深入VBScript
- 01-10VBScript語(yǔ)法速查及實(shí)例說明
隨機(jī)閱讀
- 08-05織夢(mèng)dedecms什么時(shí)候用欄目交叉功能?
- 01-10SublimeText編譯C開發(fā)環(huán)境設(shè)置
- 01-10delphi制作wav文件的方法
- 01-11ajax實(shí)現(xiàn)頁(yè)面的局部加載
- 01-10使用C語(yǔ)言求解撲克牌的順子及n個(gè)骰子
- 08-05DEDE織夢(mèng)data目錄下的sessions文件夾有什
- 01-11Mac OSX 打開原生自帶讀寫NTFS功能(圖文
- 04-02jquery與jsp,用jquery
- 08-05dedecms(織夢(mèng))副欄目數(shù)量限制代碼修改
- 01-10C#中split用法實(shí)例總結(jié)