如果我所做的完全错误或者解决方案是显而易见的,请不要感到惊讶。
<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'
答案 0 :(得分:5)
您的Internet Explorer安全设置会阻止创建ActiveX控件。您需要允许“初始化和编写未标记为脚本安全的ActiveX控件”。
答案 1 :(得分:2)
嗯,WScript.Network
在IE中工作得很好,至少达到版本8。
与约OnClick
一样,默认分配(无论是运行JavaScript
还是VBScript
)
取决于页面中的脚本内容。如果您的页面同时包含脚本
语言(JavaScript
和VBScript
),然后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建议的那样你需要确认(在第一次点击时)。
答案 2 :(得分:1)
您可以选择通过将文件另存为HTA而不是HTML来完全绕过Internet Explorer的安全设置。 HTA是超文本应用程序,它们被编写为htmls并使用Internet Explorer作为GUI,但不受与HTML相同的安全性问题的限制。您需要做的唯一更改是将文件扩展名从* .html更改为* .hta。