 |
如何动态填充 HTA 中的列表框? |
|
|
| 如何动态填充 HTA 中的列表框? |
|
| 作者:佚名 文章来源:不详 点击数: 更新时间:2007-1-24 11:01:18 |
|
问: 您好,脚本专家! 在我的 HTA 中,我想在一个计算机中查询本地用户帐户的列表,然后动态创建一个包含这些帐户的列表框。如何完成上述任务?
-- BN
答: 嗨,BN。 您知道,如果您曾经看过 …操作… 中的脚本专家,您可能会重新考虑向我们询问有关动态操作的问题。 但是只要您使用动态列表框之类的东西(放弃使用类似动态特色之类的东西),我们可能会帮到你的忙。
我们先给您一个 HTA 的完整代码,它可以检索所有本地用户帐户,然后在列表框中显示这些动态填充的帐户。 要使用该代码,请从您的浏览器复制它,然后粘贴到记事本或其他文本编辑器中,接着用 .hta 文件扩展名将其保存。 如果您由于不知道 HTA 是什么而感到不知所措(提示: 它是 HTML 应用程序的缩写),则您可能想要查看我们的 HTA Developers Center(英文),甚至会细读我们的 HTA tutorial series(英文)。
代码如下:
<html> <head> <title>Local Users</title>
<HTA:APPLICATION ID="objHTAHelpomatic" APPLICATIONNAME="LocalUsers" SCROLL="yes" SINGLEINSTANCE="yes" WINDOWSTATE="maximize" > </head>
<SCRIPT Language="VBScript">
Sub Window_Onload Set objNetwork = CreateObject("Wscript.Network") strComputer = objNetwork.ComputerName Set colAccounts = GetObject("WinNT://" & strComputer & "") colAccounts.Filter = Array("user")
For Each objUser In colAccounts Set objOption = Document.createElement("OPTION") objOption.Text = objUser.Name objOption.Value = objUser.Name LocalUsers.Add(objOption) Next End Sub
</SCRIPT>
<body> <select size="5" name="LocalUsers"> </select> </body> </html>
我们所关心的部分是 Window_Onload 子例程。 (顺便提一句,我们使用此子例程是因为无论何时启动 HTA 或者无论何时刷新 HTA,Window_Onload 都会自动运行。) 在该子例程中,我们做两件事情: 检索所有本地用户帐户的列表,然后获取这些用户名并将其放入列表框。 今天我们不会浪费任何时间去讨论检索本地用户帐户的过程;我们目前所要做的就是告诉您我们使用下列四行代码来执行该功能:
Set objNetwork = CreateObject("Wscript.Network") strComputer = objNetwork.ComputerName Set colAccounts = GetObject("WinNT://" & strComputer & "") colAccounts.Filter = Array("user")
我们今天要讨论的部分包括获取这些用户帐户并将其添加到列表框中。 在此之前,我们应当指出,在我们启动该 HTA 时,列表框已经存在;只是其中没有任何项目。 当然,我们本来也可以更加动态,也即时地创建列表框。 但是这比我们想要的更复杂一点儿,无论如何似乎真的不值得。 如果您感到疑惑,以下便是 HTML 标记,这些标记可用于创建空的列表框:
<select size="5" name="LocalUsers"> </select>
现在,您终于可以看到用用户名填充列表框的代码:
For Each objUser In colAccounts Set objOption = Document.createElement("OPTION") objOption.Text = objUser.Name objOption.Value = objUser.Name LocalUsers.Add(objOption) Next
在此处我们要做的事是建立一个 For Each 循环以遍历用户帐户的集合。 对于每一个用户帐户,我们都创建一个 HTML Option 对象的实例;每个 Option 对象都等同于列表框中的一个项目。 以下代码行就用来解决这个问题:
Set objOption = Document.createElement("OPTION")
然后我们使用下面两行代码配置项目的 Text 和 Value 属性:
objOption.Text = objUser.Name objOption.Value = objUser.Name
如果您对 HTML 未做很多工作,则 Text 便仅仅是显示在列表框中的文本。 在下面显示的样例列表框中,Option 2 不仅是列表框中显示的用户名,而且也是突出显示项目的 Text:
同时,Value 是在选择给定选项时报告给子例程的数据。 选项的 Text 和 Value 不必完全相同。 在本例中我们使其完全相同,仅仅是因为它有意义: 您想要在列表框中显示用户名,并且您可能想要在子例程中使用该用户名。 (例如,您的子例程很可能会绑定到该特定帐户,并且您需要具备该用户名才能执行该操作。) 然而,我们可能已将 Text 设置为用户名并将 value 设置为,比方说,雇员的 ID 号(假设该信息对我们可用)。 这将由您来决定。
配置了 Option 对象之后,我们会将新项目添加到列表框中,如下所示:
LocalUsers.Add(objOption)
正如您所看到的,我们所做的就是引用列表框 (LocalUsers) 并调用 Add 方法。 用这种方法,我们为 Add 传递了一个单一参数: 引用我们的 Option 对象的对象。 解答基本上就是这么多了: 我们再次循环,为集合中的所有帐户重复该过程,然后结束。
是的,非常简单,仅需非常少的编码工作。 但是,您期望什么呢? 毕竟,即使脚本专家效率很高,我们也仍然会试着尽可能地少费力气。
【转自世纪安全网 http://www.21safe.com】
|
|
| 文章录入:admin 责任编辑:admin |
|
|
上一篇文章: 如何监视事件日志了解是否发生特定事件? 下一篇文章: 如何更改现有快捷方式的图标? |
|
|
| 【字体:小 大】【发表评论】【加入收藏】【告诉好友】【打印此文】【关闭窗口】 |
|
|
网友评论:(只显示最新10条。评论内容只代表网友观点,与本站立场无关!) |
|
|
|
|
|