VBScript将重点放在IE中的一个窗口上

jtp*_*yda 5 vbscript internet-explorer wsh setfocus

我正在更新一段旧代码,它使用VBScript在IE中拉出一个窗口.出于某种原因,它喜欢在IE背后开放.谷歌给了我以下几行在VBScript中设置窗口焦点:

set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate("calculator")
Run Code Online (Sandbox Code Playgroud)

但是,当我在IE中运行它时,我收到错误"Object required:'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>
Run Code Online (Sandbox Code Playgroud)

不工作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>
Run Code Online (Sandbox Code Playgroud)

我想我总是可以重构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>
Run Code Online (Sandbox Code Playgroud)

Luc*_*125 2

WScript 对象在 IE 中不存在,除非您自己使用以下命令创建它:
Set WScript = CreateObject("WScript.Shell")
但如果安全设置不是处于相当低的级别,它将无法工作。

编辑:考虑到 Tmdean 的评论,这是工作代码:

'CreateObject("WScript.Shell")
Set wshShell = CreateObject("WScript.Shell")
wshShell.AppActivate("calculator")
Run Code Online (Sandbox Code Playgroud)