国产探花免费观看_亚洲丰满少妇自慰呻吟_97日韩有码在线_资源在线日韩欧美_一区二区精品毛片,辰东完美世界有声小说,欢乐颂第一季,yy玄幻小说排行榜完本

首頁 > 編程 > VBScript > 正文

用vbs將輸出內容寫到屏幕以覆蓋當前屏幕上的內容的方法

2020-06-26 18:07:10
字體:
來源:轉載
供稿:網友
問: 
您好,腳本專家!如何將輸出內容寫到屏幕以覆蓋當前屏幕上的內容? 
-- KM 
答: 
您好,KM。如果您確實需要將輸出內容寫到命令窗口,那么,我們沒辦法給您提供答案:盡管我們多少已經處理過一些問題,但我們從未找到一種簡單、直接的方法可覆蓋命令窗口中的信息。 
不過,如果您要將信息輸出到 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 
看上去確實有點長,但其實非常簡單,這一點您很快就會發現。例如,乍一看,這段代碼可能挺恐怖: 
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 
不過,事實證明,我們所做的只是創建一個 Internet Explorer 的空實例;而且,這是通過前兩行代碼完成的。其余代碼行只是配置 Internet Explorer 窗口的各種屬性而已:我們設置寬度為 400 像素,隱藏工具欄,然后將 Internet Explorer 窗口定位在屏幕的左上角。如果愿意使用 Internet Explorer 窗口的默認配置,則可跳過 3 到 8 行。 
設置完 Internet Explorer 窗口之后,我們使用下面的 Do While 循環,在完全載入 Internet Explorer 后中止該腳本: 
Do While (objExplorer.Busy) 
    Wscript.Sleep 200 
Loop 
看到了嗎?還算不錯。啟動并運行 Internet Explorer 后,接下來為 Internet Explorer 窗口指定一個標題,并將 Visible 屬性設置為 True (1)。我們這么做的原因是,迄今為止,Internet Explorer 還在隱藏窗口中運行,在屏幕上看不到。不過下面的代碼可解決這個小問題: 
objExplorer.Document.Title = "Process Information"    
objExplorer.Visible = 1 
現在我們準備在窗口中寫點什么。對于此示例腳本,就像下面的代碼那樣簡單: 
objExplorer.Document.Body.InnerHTML = "Retrieving process information." 
正如您所看到的那樣,我們只是賦給 Document.Body 對象的 InnerHTML 屬性一個值。這種情況下,我們僅為 InnerHTML 賦予一些文本:檢索進程信息。不過,我們可以很容易地添加一些 HTML 標記并創建更為獨特的輸出。例如,此行代碼會將寫到窗口中的文本加粗: 
objExplorer.Document.Body.InnerHTML = "<B>Retrieving process information.</B>" 
好吧,或許這與設想并不完全相符。但您已經得到問題的答案了。 
在 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 
我們只需檢索本地計算機上運行的進程集合。這并不十分重要;我們只是需要通過運行該腳本而得到一些有趣的結果。我們今天所關心的是在我們建立的用來遍歷該集合中所有項的 For Each 循環內將會發生什么: 
For Each objItem in colItems 
    objExplorer.Document.Body.InnerHTML = objItem.Name 
    Wscript.Sleep 500 
Next 
在多數 WMI 腳本中,我們在 For Each 循環內回顯屬性值(例如,Name)。不過在此,我們不使用 Wscript.Echo,而是將集合中第一個進程的名稱分配給腳本主體的 InnerHTML 屬性: 
objExplorer.Document.Body.InnerHTML = objItem.Name 
這樣做會有什么結果呢?將使用集合中第一個進程的名稱覆蓋 Internet Explorer 窗口的現有內容。例如,我們要開始循環時,Internet Explorer 窗口中將含有以下文本: 
檢索進程信息。 
當我們啟動循環后,這段文本將被替換為集合中第一個進程的名稱。例如: 
Winword.exe。 
覆蓋窗口中的內容后,我們將腳本中止半秒(500 毫秒)。再次強調一下,這并不是必須要做的事情;我們這樣做只是為了減緩腳本速度,以便您能看到顯示的第一個進程的名稱。半秒后,進入下一個循環并檢索關于集合中第二個進程的信息。之后,該腳本將用第二個進程的名稱替換 Internet Explorer 窗口中的現有內容(從技術角度上講,是賦給 InnerHTML 屬性的值),然后以此類推。 
在遍歷整個集合后,我們指示該腳本已結束,中止 3 秒,然后關閉 Internet Explorer 窗口: 
objExplorer.Document.Body.InnerHTML = "Process information retrieved." 
Wscript.Sleep 3000 
objExplorer.Quit 
運行效果很不錯,而且非常簡單。因為它使用 HTML,這意味著您盡可以使輸出如您所愿;事實上,您甚至可以使 Internet Explorer 窗口的外觀像命令窗口一樣。如果這還不夠酷,那,我們也不知道怎樣才算酷了。(事實上,正如一個腳本專家兒子經常提醒他的腳本專家父親的那樣,我們不知道什么是酷。)
發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
主站蜘蛛池模板: 丹东市| 称多县| 廉江市| 横峰县| 壤塘县| 盐池县| 西和县| 贵阳市| 宝兴县| 郸城县| 邵阳市| 合肥市| 永平县| 泰州市| 安平县| 平昌县| 汉源县| 哈巴河县| 武宣县| 秀山| 太湖县| 田东县| 道孚县| 绥芬河市| 南江县| 虹口区| 怀宁县| 宜兰市| 宁阳县| 阿鲁科尔沁旗| 德格县| 绩溪县| 神木县| 忻城县| 会宁县| 沅江市| 商城县| 栾川县| 民县| 咸宁市| 石河子市|