在 vbscript 中使用 HTA
Posted
技术标签:
【中文标题】在 vbscript 中使用 HTA【英文标题】:Using HTA in vbscript 【发布时间】:2013-02-11 13:58:03 【问题描述】:在为 VBscript 使用 HTA 用户表单时,我发现 HTA 不支持 WScript 及其对象/方法。
有没有其他方法可以创建用户表单,或者有什么方法可以让 HTA 支持 WScript?
【问题讨论】:
您需要使用哪些 WScript 成员?也许还有其他选择 我正在使用 WScript.Echo 和 FileSystemObject 对象 【参考方案1】:WScript.Echo
的替代方法是简单地将内容添加到 DOM:
<script language="vbscript">
dim div: set div = document.getElementById("output")
div.innerText = "output"
</script>
<div id="output"/>
或者如果你想要一个对话框,你可以使用MsgBox()
<script language="vbscript">
MsgBox "output"
</script>
你可以使用Scripting.FileSystemObject
而不使用WScript
<script language="vbscript">
dim fso: set fso = CreateObject("Scripting.FileSystemObject")
dim path: path = fso.GetAbsolutePathName(".")
'... etc
</script>
【讨论】:
【参考方案2】:将您的Wscript
代码放入.wsf
文件并像这样调用脚本:
shell=new ActiveXObject('WScript.Shell');
shell.Exec('WScript //Job:job_id PATH_TO_YOUR_WSF_FILE');
通过.wsf
,您还可以使用WScript.Sleep()
、WScript.SendKeys()
等HTA 中不可用的方法。
MSDN 上的更多信息:Windows Script Host
【讨论】:
我实际上是从 bat 文件中调用 vbs 文件。然后从 vbs 我调用 HTA 表单来获取用户输入并根据输入执行操作。 类似this?如果是这样,您需要HTABox.document.write
我想的 JScript。
现在我有了从 bat 文件中调用 HTA 文件的想法。但是是否可以从 hta 获取数据到批处理文件?
如果您能告诉我如何在窗口之间进行交互,我会很高兴。我使用了临时文件,它工作正常,除了你不能传递真实的对象......
我会将参数传递给 hta 文件,如下所示:@call scripts\UserForm.hta "src" "dest" "op" 稍后在 hta 中,我会将值存储在这些参数中,以便我可以使用它们在 bat 文件中。我不知道这是否有意义以上是关于在 vbscript 中使用 HTA的主要内容,如果未能解决你的问题,请参考以下文章
如何在 vbscript 中引用类型库(通常使用 xshell 库)