我正在更新一段旧代码,它使用 VBScript 在 IE 中打开一个窗口。出于某种原因,它喜欢在 IE 后面打开。谷歌给了我以下几行在 VBScript 中设置窗口焦点:
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate("calculator")
但是,当我在 IE 中运行它时,我收到错误“需要对象:'WScript'”。
在 IE 中有什么方法可以解决这个问题,或者有其他方法吗?我已经可以毫无问题地打开和操作 Word 文档。
编辑:为了澄清,我在浏览器(IE)的 <script type="text/vbscript"> 标记中运行它,并且代码在第一行崩溃,甚至在我调用 AppActivate 之前。
更新:我的安全设置很低;所有 ActiveX 设置都启用(这是一个 Intranet 服务)。我测试了这个问题的代码,计算器打开没有问题。事实上,我让 AppActivate 可以与 JavaScript 一起使用,但它不能与 VBScript 一起使用。
工作 JavaScript:
<script type="text/javascript">
function calcToFrontJ(){
wshShell = new ActiveXObject("WScript.Shell");
wshShell.AppActivate("Calculator");
}
</script>
不工作的 VBScript:
<script type="text/vbscript">
Public Function calcToFrontV()
'Set WScript = CreateObject("WScript.Shell") 'breaks with or without this line
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate("Calculator")
End Function
</script>
我想我总是可以重构为 JavaScript,但我真的很想知道这个 VBScript 发生了什么。
最终答案:
<script type="text/vbscript">
Public Function calcToFrontV()
'must not use WScript when running within IE
Set WshShell = CreateObject("WScript.Shell")
WshShell.AppActivate("Calculator")
End Function
</script>