欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

使用vbscript腳本在表單中進行選擇的代碼

 更新時間:2007年04月02日 00:00:00   作者:  
問:
嗨,Scripting Guy!我想創(chuàng)建一個帶有四個單選按鈕的表單,其中每個按鈕各代表一臺計算機??梢赃x擇一個單選按鈕,單擊另一個按鈕,然后腳本將在所選的計算機上運行。我怎樣才能做到?

-- CW

答:
嗨,CW。如果我們所說的只是 VBScript 和 Windows Script Host,那么這個問題很簡單:辦不到。除了顯示消息框以外,VBScript 和 WSH 都無法創(chuàng)建圖形用戶界面;沒辦法通過腳本使用單選按鈕、列表框、下拉列表以及其他圖形元素。

但是——噢,你們以前一定見過這種情況。沒錯:我們先告訴您某事辦不到,然后再告訴您做事的方法。(嗨,每個人多需要點技巧,不是嗎?)沒錯:雖然您不會只用 VBScript 實現(xiàn)這一點,但是完全可以使用 HTA(HTML 應用程序)來實現(xiàn)。

我們今天不會花太多時間來談論 HTA;如果您對此感興趣,可以查找大約一年前我們針對該主題推出的網絡廣播??梢哉f,HTA 使我們能夠將 Internet Explorer 和腳本代碼結合在一起,并反過來為腳本提供圖形用戶界面。雖然還有一些方法可以將圖形用戶界面合并到腳本中,但是對于才開始涉足 GUI 開發(fā)的用戶來說,這可能是最簡單的方法。

讓我們先提供 HTA 的代碼,然后再解釋其工作原理。此示例 HTA 顯示了四個單選按鈕,其中每個按鈕各代表一臺計算機。選擇一臺計算機,并單擊一個“Run Script(運行腳本)”按鈕;完成后,將運行一個子例程。該程序將連接到已選定的計算機,然后報告該計算機上所安裝的操作系統(tǒng)的名稱。很不錯吧?如要了解其工作原理,復制該代碼,將其粘貼到記事本中,然后以 .hta 文件擴展名(比如:os_name.hta)保存文件。不要使用 .vbs 文件擴展名;那樣行不通。擴展名必須是 .hta。

復制代碼 代碼如下:

<SCRIPT LANGUAGE="VBScript"> 

Sub RunScript 

    If ComputerOption(0).Checked Then 
        strComputer = ComputerOption(0).Value 
    End If 
    If ComputerOption(1).Checked Then 
        strComputer = ComputerOption(1).Value 
    End If 
    If ComputerOption(2).Checked Then 
        strComputer = ComputerOption(2).Value 
    End If 
    If ComputerOption(3).Checked Then 
        strComputer = ComputerOption(3).Value 
    End If 

    If strComputer = "" Then 
        Exit Sub 
    End If 

    Set objWMIService = GetObject _ 
        ("winmgmts:\\" & strComputer & "\root\cimv2") 
    Set colItems = objWMIService.ExecQuery _ 
        ("Select * From Win32_OperatingSystem") 
    For Each objItem in ColItems 
        Msgbox objItem.Caption 
    Next 

End Sub 

Sub CancelScript 
   Self.Close() 
End Sub 

</SCRIPT> 

<BODY> 
<input type="radio" name="ComputerOption" value="atl-ws-01">atl-ws-01<BR> 
<input type="radio" name="ComputerOption" value="atl-ws-02">atl-ws-02<BR> 
<input type="radio" name="ComputerOption" value="atl-ws-03">atl-ws-03<BR> 
<input type="radio" name="ComputerOption" value="atl-ws-04">atl-ws-04<P> 

<input id=runbutton class="button" type="button" value="Run Script" name="ok_button"  
onClick="RunScript"> 
&nbsp;&nbsp;&nbsp; 
<input id=runbutton class="button" type="button" value="Cancel" name="cancel_button"  
onClick="CancelScript"> 

</BODY> 

那么該代碼包含哪些內容呢?我們可以將該代碼分為四部分:其中有兩個部分使用 HTML 標記來實現(xiàn)單選按鈕以及“Run Script(運行腳本)”和“Cancel(取消)”按鈕,而另外兩個部分則根據(jù)您所點擊的是“Run Script”還是“Cancel”來運行子例程。讓我們更進一步了解這幾個部分。

例如,HTML 代碼在此顯示這四個單選按鈕。(如果您了解 HTML,那么這里就沒有什么特別的;這是標準的 HTML 編碼。)請注意,所有按鈕都有相同的名稱 (ComputerOption);這是為了確保一次只能選擇一個按鈕。還要注意,每個按鈕的“值”都被設為相應計算機的名稱:

<BODY>
<input type="radio" name="ComputerOption" value="atl-ws-01">atl-ws-01<BR>
<input type="radio" name="ComputerOption" value="atl-ws-02">atl-ws-02<BR>
<input type="radio" name="ComputerOption" value="atl-ws-03">atl-ws-03<BR>
<input type="radio" name="ComputerOption" value="atl-ws-04">atl-ws-04<P>

這是顯示“Run Script”和“Cancel”按鈕的代碼。這里的關鍵是“onClick”參數(shù)(在單擊按鈕時,指示該運行哪個子例程)。正如單擊第一個按鈕所能看到的,RunScript 子例程將運行;單擊第二個按鈕,CancelScript 子例程將運行:

<input id=runbutton class="button" type="button" value="Run Script" name="ok_button" 
onClick="RunScript">
&nbsp;&nbsp;&nbsp;
<input id=runbutton class="button" type="button" value="Cancel" name="cancel_button" 
onClick="CancelScript">

</BODY>

順便說一下,CancelScript 子例程會關閉 HTA。正如您看到的,整個過程一點都不復雜:

Sub CancelScript
   Self.Close()
End Sub

現(xiàn)在——最終!——我們要遇到好事了。選擇一個單選按鈕,然后單擊“Run Script”。我們的 HTA 是如何知道所選擇的按鈕以及如何知道對哪臺計算機運行腳本?那么,到底要在哪里運行腳本呢?放松點;一切都在 RunScript 例程中:

復制代碼 代碼如下:

Sub RunScript 

    If ComputerOption(0).Checked Then 
        strComputer = ComputerOption(0).Value 
    End If 
    If ComputerOption(1).Checked Then 
        strComputer = ComputerOption(1).Value 
    End If 
    If ComputerOption(2).Checked Then 
        strComputer = ComputerOption(2).Value 
    End If 
    If ComputerOption(3).Checked Then 
        strComputer = ComputerOption(3).Value 
    End If 

    If strComputer = "" Then 
        Exit Sub 
    End If 

    Set objWMIService = GetObject _ 
        ("winmgmts:\\" & strComputer & "\root\cimv2") 
    Set colItems = objWMIService.ExecQuery _ 
        ("Select * From Win32_OperatingSystem") 
    For Each objItem in ColItems 
        Msgbox objItem.Caption 
    Next 

End Sub 

該子例程的前半部分用以確定所選的具體按鈕。單選按鈕(至少是具有相同名稱的按鈕)作為數(shù)組進行存儲;數(shù)組中的第一個按鈕是項目 0,第二個按鈕是項目 1 等等。我們在這里所做的就是確定選擇了哪個按鈕;這可以通過查看每個按鈕的“Checked(選定)”屬性來實現(xiàn)。例如,這行代碼用以確定按鈕 0(數(shù)組中的第一個按鈕)的“Checked”屬性是否為 true;如果是的話,就表示所選定的就是該按鈕:

If ComputerOption(0).Checked Then
如果“Checked”為 true,又如何呢?那么,隨后將對變量 strComputer 指派該單選按鈕的值(同時記住,該按鈕的值恰好是計算機的名稱):

strComputer = ComputerOption(0).Value
如果“Checked”為 False,那又如何呢?沒什么大不了;畢竟我們已經檢查了每個單選按鈕的值。遲早都會弄清楚選定了哪個按鈕(而且只能有一個)。如果最終確定未選擇任何按鈕,那么就將退出該子例程。這就是該代碼所完成的工作:

復制代碼 代碼如下:

If strComputer = "" Then 
    Exit Sub 
End If 

如果選擇了一個按鈕,那么 strComputer 將為我們所要連接的計算機的名稱。這就是該子例程的后半部分所完成的工作:連接到指定計算機并返回其上所安裝的操作系統(tǒng)的名稱的是一個標準 WMI 腳本。

喲!我們敢打賭,對于能完成這件事,您會感到很高興,不是嗎?或者,至少如果我們的確做到了這一點,您就會高興。但是,還有一點需要指出。我們在此提供的示例 HTA 可以檢索計算機上所安裝的操作系統(tǒng)的名稱,然后將其顯示在消息框中。這很好,但是比方說您想顯示計算機上所安裝的所有服務的列表,又該怎么辦呢?這時,您會發(fā)現(xiàn)自己將應答幾十個消息框。這可不是您我所希望得到的用戶體驗。

那么,能否解決這個問題?當然可以。我們不想在這方面多花時間,但是需要做幾件事。首先,我們在 HTA 中添加了一個 SPAN 區(qū)域;這只是屏幕上的一個可識別的區(qū)域,可以在其中寫入信息。使用此類代碼將 SPAN(附帶 DataArea 的 ID)放置在按鈕的下方:

<P> <span id=DataArea></span>
其次,需要收集該數(shù)據(jù),并將其全都保存到一個變量中,而不在一個消息框中顯示所有數(shù)據(jù)。該代碼將變量 strText 的值設為當前在 strText 中的任何值加上“caption”屬性的值,再加上 <BR> 標記(在 HTML 腳本中相當于按鍵盤上的“ENTER”鍵):

strText = strText & objItem.Caption & "<BR>"
最后,需要將 SPAN 的“InnerHTML”屬性設為變量 strText 的值:

DataArea.InnerHTML = strText
都明白了嗎?另外,為了避免過多的解釋,這里有個修改過的 HTA,可以收集計算機上所安裝的所有服務的名稱,然后自動將這些名稱寫入 HTA 中:

復制代碼 代碼如下:

<SCRIPT LANGUAGE="VBScript"> 

Sub RunScript 

    If ComputerOption(0).Checked Then 
        strComputer = ComputerOption(0).Value 
    End If 
    If ComputerOption(1).Checked Then 
        strComputer = ComputerOption(1).Value 
    End If 
    If ComputerOption(2).Checked Then 
        strComputer = ComputerOption(2).Value 
    End If 
    If ComputerOption(3).Checked Then 
        strComputer = ComputerOption(3).Value 
    End If 

    If strComputer = "" Then 
        Exit Sub 
    End If 

    Set objWMIService = GetObject _ 
        ("winmgmts:\\" & strComputer & "\root\cimv2") 
    Set colItems = objWMIService.ExecQuery _ 
        ("Select * From Win32_Service") 
    For Each objItem in ColItems 
        strText = strText & objItem.Name & "<BR>" 
    Next 

    DataArea.InnerHTML = strText 

End Sub 

Sub CancelScript 
   Self.Close() 
End Sub 

</SCRIPT> 

<BODY> 
<input type="radio" name="ComputerOption" value="atl-ws-01">atl-ws-01<BR> 
<input type="radio" name="ComputerOption" value="atl-ws-02">atl-ws-02<BR> 
<input type="radio" name="ComputerOption" value="atl-ws-03">atl-ws-03<BR> 
<input type="radio" name="ComputerOption" value="atl-ws-04">atl-ws-04<P> 

<input id=runbutton class="button" type="button" value="Run Script" name="ok_button"  
onClick="RunScript"> 
&nbsp;&nbsp;&nbsp; 
<input id=runbutton class="button" type="button" value="Cancel" name="cancel_button"  
onClick="CancelScript"> 
<P> 
<span id=DataArea></span> 
</BODY> 

相關文章

  • VBScript根據(jù)盤符找設備名的代碼

    VBScript根據(jù)盤符找設備名的代碼

    這篇文章主要介紹了vbs下通過盤符找設備名的實現(xiàn)代碼,需要的朋友可以參考下
    2013-07-07
  • vbs腳本 加密 幾個小細節(jié)小結下

    vbs腳本 加密 幾個小細節(jié)小結下

    加密的vbs腳本拖到這個腳本上就行了。網上有位朋友問我這個問題,我由于今天才上email看了下文件,發(fā)現(xiàn)下面的問題,說實話對于他要問的我和你清楚,我不太會寫呢,不是出于技術問題,是出于已經沒了這份愛好。出于對朋友學習的理解,我給解決了幾個問題,下面總結下。并給出正確的代碼。
    2008-01-01
  • 使用vbs刪除host文件域址內容

    使用vbs刪除host文件域址內容

    本文給大家分享的是使用VBS實現(xiàn)刪除host文件里面的指定內容,非常的簡單實用,有需要的小伙伴可以參考下。
    2015-09-09
  • VBS基礎篇 - vbscript堆棧

    VBS基礎篇 - vbscript堆棧

    VBS中的堆棧需要使用System.Collections.Stack,下面的代碼包含堆棧的添加元素(壓棧)、刪除元素(出棧)、遍歷、統(tǒng)計元素個數(shù)、清空,需要的朋友可以參考下
    2018-05-05
  • 把任意文件轉成vbs文件的file2vbs的vbs代碼

    把任意文件轉成vbs文件的file2vbs的vbs代碼

    文章作者:xiaolu [BST] 信息來源:邪惡八進制信息安全團隊(www.eviloctal.com) 這個不是exe2vbs 所有類型的文件都可以轉化的 不過限于string的大小 文件不能太大 我測試過3m的文件是可以的
    2008-05-05
  • xp、2003開3389+非net創(chuàng)建管理用戶+Shift后門+自刪除腳本vbs

    xp、2003開3389+非net創(chuàng)建管理用戶+Shift后門+自刪除腳本vbs

    喜歡VBS腳本的朋友可以下載使用。此腳本免殺,可以用于WebShell提供時使用,適用于2003系統(tǒng)和XP系統(tǒng)。
    2008-06-06
  • VBS實現(xiàn)截圖功能

    VBS實現(xiàn)截圖功能

    本文給大家分享了下2種通過VBS實現(xiàn)截圖功能的代碼,第一個是純VBS實現(xiàn),第二種方法是通過把簡短的第三方工具集合到VBS腳本來實現(xiàn)更加豐富的功能。
    2015-09-09
  • VBS實現(xiàn)的系統(tǒng)服務備份優(yōu)化代碼

    VBS實現(xiàn)的系統(tǒng)服務備份優(yōu)化代碼

    將下面代碼保存為VBS執(zhí)行即可,服務優(yōu)化規(guī)則可以自由修改(上面是我現(xiàn)在使用的優(yōu)化規(guī)則),并且每次優(yōu)化都會在我的文檔里面生成一個對應日期的服務備份文件.可以直接還原
    2013-01-01
  • VBS字符串編碼轉換函數(shù)代碼

    VBS字符串編碼轉換函數(shù)代碼

    這篇文章主要介紹了vbs字符串在不同編碼之間的轉換,包括?ISO-8859-1,UTF-8,GBK,GB2312,GB18030之間的轉換,需要的朋友可以參考下
    2023-04-04
  • vbs教程 chm下載

    vbs教程 chm下載

    這篇文章主要是為大家介紹一些vbs的一些chm手冊,喜歡的朋友可以參考下
    2007-12-12

最新評論