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

主頁(yè) > 知識(shí)庫(kù) > 使用vbscript腳本在表單中進(jìn)行選擇的代碼

使用vbscript腳本在表單中進(jìn)行選擇的代碼

熱門標(biāo)簽:網(wǎng)站文章發(fā)布 鐵路電話系統(tǒng) 智能手機(jī) 呼叫中心市場(chǎng)需求 檢查注冊(cè)表項(xiàng) 銀行業(yè)務(wù) 服務(wù)器配置 美圖手機(jī)
問(wèn):
嗨,Scripting Guy!我想創(chuàng)建一個(gè)帶有四個(gè)單選按鈕的表單,其中每個(gè)按鈕各代表一臺(tái)計(jì)算機(jī)。可以選擇一個(gè)單選按鈕,單擊另一個(gè)按鈕,然后腳本將在所選的計(jì)算機(jī)上運(yùn)行。我怎樣才能做到?

-- CW

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

但是——噢,你們以前一定見(jiàn)過(guò)這種情況。沒(méi)錯(cuò):我們先告訴您某事辦不到,然后再告訴您做事的方法。(嗨,每個(gè)人多需要點(diǎn)技巧,不是嗎?)沒(méi)錯(cuò):雖然您不會(huì)只用 VBScript 實(shí)現(xiàn)這一點(diǎn),但是完全可以使用 HTA(HTML 應(yīng)用程序)來(lái)實(shí)現(xiàn)。

我們今天不會(huì)花太多時(shí)間來(lái)談?wù)?nbsp;HTA;如果您對(duì)此感興趣,可以查找大約一年前我們針對(duì)該主題推出的網(wǎng)絡(luò)廣播。可以說(shuō),HTA 使我們能夠?qū)?nbsp;Internet Explorer 和腳本代碼結(jié)合在一起,并反過(guò)來(lái)為腳本提供圖形用戶界面。雖然還有一些方法可以將圖形用戶界面合并到腳本中,但是對(duì)于才開(kāi)始涉足 GUI 開(kāi)發(fā)的用戶來(lái)說(shuō),這可能是最簡(jiǎn)單的方法。

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

復(fù)制代碼 代碼如下:

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-01BR> 
input type="radio" name="ComputerOption" value="atl-ws-02">atl-ws-02BR> 
input type="radio" name="ComputerOption" value="atl-ws-03">atl-ws-03BR> 
input type="radio" name="ComputerOption" value="atl-ws-04">atl-ws-04P> 

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> 

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

例如,HTML 代碼在此顯示這四個(gè)單選按鈕。(如果您了解 HTML,那么這里就沒(méi)有什么特別的;這是標(biāo)準(zhǔn)的 HTML 編碼。)請(qǐng)注意,所有按鈕都有相同的名稱 (ComputerOption);這是為了確保一次只能選擇一個(gè)按鈕。還要注意,每個(gè)按鈕的“值”都被設(shè)為相應(yīng)計(jì)算機(jī)的名稱:

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

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

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>

順便說(shuō)一下,CancelScript 子例程會(huì)關(guān)閉 HTA。正如您看到的,整個(gè)過(guò)程一點(diǎn)都不復(fù)雜:

Sub CancelScript
   Self.Close()
End Sub

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

復(fù)制代碼 代碼如下:

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ù)組進(jìn)行存儲(chǔ);數(shù)組中的第一個(gè)按鈕是項(xiàng)目 0,第二個(gè)按鈕是項(xiàng)目 1 等等。我們?cè)谶@里所做的就是確定選擇了哪個(gè)按鈕;這可以通過(guò)查看每個(gè)按鈕的“Checked(選定)”屬性來(lái)實(shí)現(xiàn)。例如,這行代碼用以確定按鈕 0(數(shù)組中的第一個(gè)按鈕)的“Checked”屬性是否為 true;如果是的話,就表示所選定的就是該按鈕:

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

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

復(fù)制代碼 代碼如下:

If strComputer = "" Then 
    Exit Sub 
End If 

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

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

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

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

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

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

復(fù)制代碼 代碼如下:

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-01BR> 
input type="radio" name="ComputerOption" value="atl-ws-02">atl-ws-02BR> 
input type="radio" name="ComputerOption" value="atl-ws-03">atl-ws-03BR> 
input type="radio" name="ComputerOption" value="atl-ws-04">atl-ws-04P> 

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> 

您可能感興趣的文章:
  • ASP、vbscript編碼模板
  • ASP中一個(gè)用VBScript寫的隨機(jī)數(shù)類
  • 利用vbscript腳本修改文件內(nèi)容,此適用于自動(dòng)化的操作中
  • asp,VBscript語(yǔ)法錯(cuò)誤,史上最全最詳細(xì)最精確
  • vbscript腳本編程教程2利用fso來(lái)進(jìn)行文件操作
  • 用vbscript腳本實(shí)現(xiàn)返回 IP 配置數(shù)據(jù)的代碼
  • ASP里面令人震撼地Debug類(VBScript)
  • 調(diào)試JavaScript/VBScript腳本程序(IE篇)
  • JavaScript/VBScript腳本程序調(diào)試(Wscript篇)
  • 枚舉域內(nèi)計(jì)算機(jī)個(gè)數(shù)vbscript腳本(沒(méi)環(huán)境,沒(méi)測(cè)試)
  • ASP/VBScript中CHR(0)的由來(lái)以及帶來(lái)的安全問(wèn)題分析
  • ASP(VBScript)中整除和取余
  • ASP基礎(chǔ)知識(shí)VBScript基本元素講解
  • ASP基礎(chǔ)入門第四篇(腳本變量、函數(shù)、過(guò)程和條件語(yǔ)句)

標(biāo)簽:沈陽(yáng) 紅河 樂(lè)山 新疆 上海 長(zhǎng)治 河南 滄州

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《使用vbscript腳本在表單中進(jìn)行選擇的代碼》,本文關(guān)鍵詞  ;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 收縮
    • 微信客服
    • 微信二維碼
    • 電話咨詢

    • 400-1100-266
    揭阳市| 志丹县| 岳普湖县| 年辖:市辖区| 鄂尔多斯市| 营山县| 江油市| 黄冈市| 安阳县| 定襄县| 武汉市| 磴口县| 阿图什市| 南木林县| 申扎县| 万安县| 泽库县| 白城市| 阜新市| 宜昌市| 乌什县| 宜兰市| 泸州市| 芜湖市| 呼伦贝尔市| 民丰县| 佛教| 淳化县| 龙山县| 招远市| 扎兰屯市| 赤城县| 德江县| 武穴市| 北川| 日照市| 申扎县| 元谋县| 正镶白旗| 渝中区| 甘泉县|