我有一个HTA代码,下面列出了特定文件夹中的所有子文件夹。 我的问题是,如果我从列表中单击一个子文件夹,它如何自动创建第二个列表,该列表为我提供该子文件夹中的所有子文件夹?等等,直到找不到子文件夹,最后一个子文件夹需要列出其中的所有文件。另外如何在每个名为[new folder]的列表的末尾添加一个额外的选项,它会弹出一个窗口,允许输入名称来创建一个新文件夹。
最后,如果单击[提交]按钮,它将打开我在Windows资源管理器中选择的最后一个子文件夹。 我是vbs的新手,所以请帮忙
<HEAD>
<TITLE>K Drive Program Structure</TITLE>
<HTA:APPLICATION ID="Hello"
APPLICATIONNAME="K Drive Program Structure"
BORDER="Dialog"
CAPTION="Yes"
SCROLL="NO"
SHOWINTASKBAR="yes"
SINGLEINSTANCE="yes"
SYSMENU="Yes"
WINDOWSTATE="maximize">
</HEAD>
<BODY>
<SCRIPT LANGUAGE="VBScript">
Sub UpdateList
For Each opt In list.Options
opt.RemoveNode
Next
Set fso = CreateObject("Scripting.FileSystemObject")
For Each f In fso.GetFolder("K:\AppData").SubFolders
Set opt = document.createElement("OPTION")
opt.Text = f.Name
opt.Value = f.Path
list.Add(opt)
Next
End Sub
</SCRIPT>
<H2>K Drive Structure</H2>
<P>CUSTOMER
<select id="list" name="list" onMouseOver="UpdateList"></select><P>
<BR>
<BR>
<Input Type = "Button" Name = "btn01" VALUE = "SUBMIT">
<Input Type = "Button" Name = "btn02" VALUE = "CLOSE">
<BR>
<BR>
</BODY>
感谢您的帮助
答案 0 :(得分:1)
为什么不使用像我suggested这样的Shell.BrowseForFolder
方法?试图在HTA中重新发明它总是很尴尬。
至于您的问题,您需要在onChange
代码中添加<select>
处理程序:
<select id="list" name="list" onMouseOver="UpdateList" onChange="EnumSubFolders">
</select>
和一个枚举子文件夹的过程EnumSubFolders
:
Sub EnumSubFolders
Set fso = CreateObject("Scripting.FileSystemObject")
For Each opt In list.options
If opt.selected Then
Set sf = fso.GetFolder(opt.value).SubFolders
'do stuff with sf
Exit For
End If
Next
End Sub
您可能还需要对UpdateList
进行一些修改(比如在刷新列表之前记住当前选择的选项)。