佳木斯湛栽影视文化发展公司

主頁 > 知識庫 > 用vbs將輸出內(nèi)容寫到屏幕以覆蓋當(dāng)前屏幕上的內(nèi)容的方法

用vbs將輸出內(nèi)容寫到屏幕以覆蓋當(dāng)前屏幕上的內(nèi)容的方法

熱門標簽:檢查注冊表項 網(wǎng)站文章發(fā)布 呼叫中心市場需求 鐵路電話系統(tǒng) 美圖手機 銀行業(yè)務(wù) 服務(wù)器配置 智能手機
問:
您好,腳本專家!如何將輸出內(nèi)容寫到屏幕以覆蓋當(dāng)前屏幕上的內(nèi)容?
-- KM
答:
您好,KM。如果您確實需要將輸出內(nèi)容寫到命令窗口,那么,我們沒辦法給您提供答案:盡管我們多少已經(jīng)處理過一些問題,但我們從未找到一種簡單、直接的方法可覆蓋命令窗口中的信息。
不過,如果您要將信息輸出到 Internet Explorer 窗口,那么我們還確實有解決辦法。而且馬上就可以給出答案:
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
看上去確實有點長,但其實非常簡單,這一點您很快就會發(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
不過,事實證明,我們所做的只是創(chuàng)建一個 Internet Explorer 的空實例;而且,這是通過前兩行代碼完成的。其余代碼行只是配置 Internet Explorer 窗口的各種屬性而已:我們設(shè)置寬度為 400 像素,隱藏工具欄,然后將 Internet Explorer 窗口定位在屏幕的左上角。如果愿意使用 Internet Explorer 窗口的默認配置,則可跳過 3 到 8 行。
設(shè)置完 Internet Explorer 窗口之后,我們使用下面的 Do While 循環(huán),在完全載入 Internet Explorer 后中止該腳本:
Do While (objExplorer.Busy)
    Wscript.Sleep 200
Loop
看到了嗎?還算不錯。啟動并運行 Internet Explorer 后,接下來為 Internet Explorer 窗口指定一個標題,并將 Visible 屬性設(shè)置為 True (1)。我們這么做的原因是,迄今為止,Internet Explorer 還在隱藏窗口中運行,在屏幕上看不到。不過下面的代碼可解決這個小問題:
objExplorer.Document.Title = "Process Information"   
objExplorer.Visible = 1
現(xiàn)在我們準備在窗口中寫點什么。對于此示例腳本,就像下面的代碼那樣簡單:
objExplorer.Document.Body.InnerHTML = "Retrieving process information."
正如您所看到的那樣,我們只是賦給 Document.Body 對象的 InnerHTML 屬性一個值。這種情況下,我們僅為 InnerHTML 賦予一些文本:檢索進程信息。不過,我們可以很容易地添加一些 HTML 標記并創(chuàng)建更為獨特的輸出。例如,此行代碼會將寫到窗口中的文本加粗:
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
我們只需檢索本地計算機上運行的進程集合。這并不十分重要;我們只是需要通過運行該腳本而得到一些有趣的結(jié)果。我們今天所關(guān)心的是在我們建立的用來遍歷該集合中所有項的 For Each 循環(huán)內(nèi)將會發(fā)生什么:
For Each objItem in colItems
    objExplorer.Document.Body.InnerHTML = objItem.Name
    Wscript.Sleep 500
Next
在多數(shù) WMI 腳本中,我們在 For Each 循環(huán)內(nèi)回顯屬性值(例如,Name)。不過在此,我們不使用 Wscript.Echo,而是將集合中第一個進程的名稱分配給腳本主體的 InnerHTML 屬性:
objExplorer.Document.Body.InnerHTML = objItem.Name
這樣做會有什么結(jié)果呢?將使用集合中第一個進程的名稱覆蓋 Internet Explorer 窗口的現(xiàn)有內(nèi)容。例如,我們要開始循環(huán)時,Internet Explorer 窗口中將含有以下文本:
檢索進程信息。
當(dāng)我們啟動循環(huán)后,這段文本將被替換為集合中第一個進程的名稱。例如:
Winword.exe。
覆蓋窗口中的內(nèi)容后,我們將腳本中止半秒(500 毫秒)。再次強調(diào)一下,這并不是必須要做的事情;我們這樣做只是為了減緩腳本速度,以便您能看到顯示的第一個進程的名稱。半秒后,進入下一個循環(huán)并檢索關(guān)于集合中第二個進程的信息。之后,該腳本將用第二個進程的名稱替換 Internet Explorer 窗口中的現(xiàn)有內(nèi)容(從技術(shù)角度上講,是賦給 InnerHTML 屬性的值),然后以此類推。
在遍歷整個集合后,我們指示該腳本已結(jié)束,中止 3 秒,然后關(guān)閉 Internet Explorer 窗口:
objExplorer.Document.Body.InnerHTML = "Process information retrieved."
Wscript.Sleep 3000
objExplorer.Quit
運行效果很不錯,而且非常簡單。因為它使用 HTML,這意味著您盡可以使輸出如您所愿;事實上,您甚至可以使 Internet Explorer 窗口的外觀像命令窗口一樣。如果這還不夠酷,那,我們也不知道怎樣才算酷了。(事實上,正如一個腳本專家兒子經(jīng)常提醒他的腳本專家父親的那樣,我們不知道什么是酷。)

標簽:滄州 長治 沈陽 河南 上海 紅河 新疆 樂山

巨人網(wǎng)絡(luò)通訊聲明:本文標題《用vbs將輸出內(nèi)容寫到屏幕以覆蓋當(dāng)前屏幕上的內(nèi)容的方法》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請?zhí)峁┫嚓P(guān)信息告之我們,我們將及時溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    新竹县| 海兴县| 富宁县| 三明市| 儋州市| 贺州市| 迁安市| 邢台市| 苗栗市| 县级市| 南漳县| 丹江口市| 塔河县| 龙山县| 阿巴嘎旗| 松潘县| 新田县| 普兰县| 淳化县| 徐闻县| 苗栗县| 门源| 巩义市| 海南省| 无锡市| 安义县| 芦山县| 龙胜| 屯留县| 玉树县| 无锡市| 达孜县| 宜川县| 凤冈县| 乐昌市| 巍山| 读书| 闵行区| 丹巴县| 朝阳区| 德惠市|