5

VBScript を使用して IE でウィンドウを表示する古いコードを更新しています。何らかの理由で、IE の背後で開くのが好きです。Google は、VBScript でウィンドウ フォーカスを設定するための次の 2 行を提供してくれました。

set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate("calculator")

しかし、これを IE で実行すると、「必要なオブジェクト: 'WScript'」というエラーが表示されます。

IEでこれを回避する方法、またはこれを行う別の方法はありますか? 既に問題なく Word 文書を開いて操作しています。

編集:明確にするために、ブラウザー (IE) の <script type="text/vbscript"> タグでこれを実行していますが、AppActivate を呼び出す前に、コードが最初の行でクラッシュしています。

更新: 私のセキュリティ設定はかなり低いです。すべての ActiveX 設定が有効になっています (これはイントラネット サービスです)。この質問のコードをテストしたところ、電卓は問題なく開きました。実際、私は 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>
4

3 に答える 3

2

自分で作成しない限り、WScript オブジェクトは IE に存在しません
Set WScript = CreateObject("WScript.Shell")

編集:Tmdeanのコメントを考慮して、これは作業コードです:

'CreateObject("WScript.Shell")
Set wshShell = CreateObject("WScript.Shell")
wshShell.AppActivate("calculator")
于 2011-05-14T20:43:53.807 に答える
0

トリックはWScript.CreateObject()、プレーンではなく使用CreateObject()して IE オブジェクトを作成することです。

Set objShell = WScript.CreateObject("WScript.Shell")
Set objIE = WScript.CreateObject("InternetExplorer.Application", "IE_")
objIE.Visible = 1
objShell.AppActivate objIE

PS https://groups.google.com/forum/#!msg/microsoft.public.scripting.vbscript/SKWhisXB4wY/U8cwS3lflXAJで Dan Bernhardt から解決策を入手しました。

于 2015-04-01T22:33:43.533 に答える