【发布时间】:2011-08-24 13:36:33
【问题描述】:
我正在更新一段旧代码,它使用 VBScript 在 IE 中打开一个窗口。出于某种原因,它喜欢在 IE 后面打开。 Google 给了我以下几行用于在 VBScript 中设置窗口焦点:
set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate("calculator")
但是,当我在 IE 中运行它时,我收到错误“需要对象:'WScript'。”
在 IE 中有什么方法可以解决这个问题,或者有其他方法吗?我已经可以毫无问题地打开和操作 Word 文档了。
编辑:澄清一下,我在浏览器 (IE) 的
更新:我的安全设置很低;所有 ActiveX 设置都启用(这是一个 Intranet 服务)。我测试了this问题的代码,计算器打开没有问题。事实上,我让 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>
【问题讨论】:
-
AppActivate 使用窗口标题栏中的文本进行搜索。你在 IE 上使用了什么代码?
-
@Tmdean 我的意思是代码在
<script type="text/vbscript">标记中并在浏览器中运行。我实际上是用“WINWORD”(进程名称)调用 AppActivate,但代码在我尝试创建 WshShell 对象的第一行崩溃。 -
WScript 仅在您使用 Windows 脚本主机(使用 wscript.exe 或 cscript.exe)运行脚本时可用。此外,还有一些安全限制会阻止您访问网页中的 WScript.Shell 对象,因为该对象未标记为可安全编写脚本。如果在网页上运行的脚本可以使用它,那将是非常危险的。见stackoverflow.com/questions/1363095/…
-
@Tmdean 感谢您提供的信息。我正在为 Intranet 编程,看起来默认设置相当宽松。 This question 说我应该启用所有 ActiveX 的东西,并且所有这些设置都已设置为启用。
标签: internet-explorer vbscript setfocus wsh