从html按钮调用vbscript函数

时间:2013-05-24 18:03:40

标签: html vbscript

如果我所做的完全错误或者解决方案是显而易见的,请不要感到惊讶。

<script type="text/vbscript">
    Function AddPrinter()
        Set objNetwork = CreateObject("WScript.Network")
        objNetwork.AddWindowsPrinterConnection "\\a2031slhsfile1\2031CAT-T113-HP4014dn"
        objNetwork.SetDefaultPrinter "\\a2031slhsfile1\2031CAT-T113-HP4014dn"
        MsgBox "The printer was added and set as the default printer."
    End Function
</script>

我将上面的vbscript添加到head部分的HTML文档中,其中一个按钮具有以下属性:

onclick="AddPrinter()"

在Google上搜索一小时后,我对此并没有太多了解。我发现的东西不起作用。它是如何知道你是从javascript还是vbscript调用函数还是其他什么东西?

我收到此错误:

SCRIPT429: ActiveX component can't create object: 'WScript.Network'

3 个答案:

答案 0 :(得分:5)

您的Internet Explorer安全设置会阻止创建ActiveX控件。您需要允许“初始化和编写未标记为脚本安全的ActiveX控件”。

答案 1 :(得分:2)

嗯,WScript.Network在IE中工作得很好,至少达到版本8。 与约OnClick一样,默认分配(无论是运行JavaScript还是VBScript) 取决于页面中的脚本内容。如果您的页面同时包含脚本 语言(JavaScriptVBScript),然后JavaScript是默认的,即:

onClick="MyFunc()" 'is equal to:
onClick="javascript:MyFunc()"

在搜索案例中,您需要使用显式语言修饰符来运行VBScript

onClick="vbscript:MyFunc()"

但是,如果您的网页仅包含VBScript,那么这不是必需的。

<html>
  <head>
    <title>Example</title>
    <script type="text/vbscript">
      Sub Hello()
          Set objNetwork = CreateObject("WScript.Network")
          If IsObject(objNetwork) Then
              MsgBox "Its working"
              MsgBox "Computer Name = " & objNetwork.ComputerName
          Else
              MsgBox "Not working"
          End If
      End Sub
      Sub btnTest2_OnClick()
          Hello()
      End Sub
    </script>
  </head>
  <body>
    <button onClick="Hello()">Test 1</button>
    <input type="button" value="Test 2" id="btnTest2">
    <input type="button" value="Test 3" onClick="Hello()">
  </body>
</html>

P.S。如果你不改变你的IE安全设置,正如Ansgar Wiechers建议的那样你需要确认(在第一次点击时)。

enter image description here

答案 2 :(得分:1)

您可以选择通过将文件另存为HTA而不是HTML来完全绕过Internet Explorer的安全设置。 HTA是超文本应用程序,它们被编写为htmls并使用Internet Explorer作为GUI,但不受与HTML相同的安全性问题的限制。您需要做的唯一更改是将文件扩展名从* .html更改为* .hta。