2017年11月
      1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30    
無料ブログはココログ

« WSHから他のWSHを操作する。(その2) | トップページ | WSHスクリプトの強制終了は避けましょう。 »

2009年3月19日 (木)

WSHから他のWSHを操作する。(その3)

VBScriptもJScriptもCOMオブジェクトです。
なので、それぞれのオブジェクトを他方に渡せば、他方のオブジェクトを操作したり、関数を呼び出したりもできます。

では、VBScriptからJScriptへ、JScriptからVBScriptへ、それぞれの関数のオブジェクト参照を渡して、互いに呼び出してみましょう。

コマンドプロンプトを二つ開いて、一方で、

cscript f1.vbs

CreateObject("Shell.Application").Windows().Item(0).PutProperty "VBS",GetRef("Sub1")
Dim fWait
fWait=True
Do While fWait
  WScript.Sleep 100
Loop
Set JS=CreateObject("Shell.Application").Windows().Item(0).GetProperty("JS")
JS "なんだよ"

Sub Sub1(s)
WScript.Echo s
fWait=False
End Sub

他方で、

cscript f2.js

WScript.CreateObject("Shell.Application").Windows().Item(0).PutProperty("JS",func1);
var VBS=WScript.CreateObject("Shell.Application").Windows().Item(0).GetProperty("VBS");
VBS("おい");
WScript.Sleep(10000);

function func1(s){
WScript.Echo(s);
WScript.Timeout=1;
WScript.Quit(1);
}

関数はオブジェクトのデフォルトメソッドになってます。

« WSHから他のWSHを操作する。(その2) | トップページ | WSHスクリプトの強制終了は避けましょう。 »