可以使用脚本在表单中进行选择吗?
问:
嗨,Scripting Guy!我想创建一个带有四个单选按钮的表单,其中每个按钮各代表一台计算机。可以选择一个单选按钮,单击另一个按钮,然后脚本将在所选的计算机上运行。我怎样才能做到?
-- CW
答:
嗨,CW。如果我们所说的只是 VBScript 和 Windows Script Host,那么这个问题很简单:办不到。除了显示消息框以外,VBScript 和 WSH 都无法创建图形用户界面;没办法通过脚本使用单选按钮、列表框、下拉列表以及其他图形元素。
但是——噢,你们以前一定见过这种情况。没错:我们先告诉您某事办不到,然后再告诉您做事的方法。(嗨,每个人多需要点技巧,不是吗?)没错:虽然您不会只用 VBScript 实现这一点,但是完全可以使用 HTA(HTML 应用程序)来实现。
我们今天不会花太多时间来谈论 HTA;如果您对此感兴趣,可以查找大约一年前我们针对该主题推出的网络广播。可以说,HTA 使我们能够将 Internet Explorer 和脚本代码结合在一起,并反过来为脚本提供图形用户界面。虽然还有一些方法可以将图形用户界面合并到脚本中,但是对于才开始涉足 GUI 开发的用户来说,这可能是最简单的方法。
让我们先提供 HTA 的代码,然后再解释其工作原理。此示例 HTA 显示了四个单选按钮,其中每个按钮各代表一台计算机。选择一台计算机,并单击一个“Run Script(运行脚本)”按钮;完成后,将运行一个子例程。该程序将连接到已选定的计算机,然后报告该计算机上所安装的操作系统的名称。很不错吧?如要了解其工作原理,复制该代码,将其粘贴到记事本中,然后以 .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">
<input id=runbutton class="button" type="button" value="Cancel" name="cancel_button"
onClick="CancelScript">
</BODY>
那么该代码包含哪些内容呢?我们可以将该代码分为四部分:其中有两个部分使用 HTML 标记来实现单选按钮以及“Run Script(运行脚本)”和“Cancel(取消)”按钮,而另外两个部分则根据您所点击的是“Run Script”还是“Cancel”来运行子例程。让我们更进一步了解这几个部分。
例如,HTML 代码在此显示这四个单选按钮。(如果您了解 HTML,那么这里就没有什么特别的;这是标准的 HTML 编码。)请注意,所有按钮都有相同的名称 (ComputerOption);这是为了确保一次只能选择一个按钮。还要注意,每个按钮的“值”都被设为相应计算机的名称:
<BODY>