【问题标题】:Using HTA in vbscript在 vbscript 中使用 HTA
【发布时间】:2013-02-11 13:58:03
【问题描述】:

在为 VBscript 使用 HTA 用户表单时,我发现 HTA 不支持 WScript 及其对象/方法。

有没有其他方法可以创建用户表单,或者有什么方法可以让 HTA 支持 WScript?

【问题讨论】:

  • 您需要使用哪些 WScript 成员?也许还有其他选择
  • 我正在使用 WScript.Echo 和 FileSystemObject 对象

标签: vbscript hta wsh


【解决方案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 文件中。我不知道这是否有意义
    猜你喜欢
    • 1970-01-01
    • 2011-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-05-15
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多