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を操作する。 | トップページ | WSHから他のWSHを操作する。(その3) »

2009年3月16日 (月)

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

WSH間で会話も可能です。

グローバルオブジェクトもCOMオブジェクト(VBScriptTypeInfo)です。
先の例ではWScriptオブジェクトを渡していましたが、ここで、もしグローバルオブジェクトを渡せば、他方のグローバル変数を操作したり、関数を呼び出したりができます。

では、グローバルオブジェクト(グローバルコンテキストでのMe)を渡して、グローバル変数を操作してみましょう。

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

cscript g1.vbs

CreateObject("Shell.Application").Windows().Item(0).PutProperty "WSH",Me
Dim fWait
Dim WSH2
fWait=True
Do While fWait
  WScript.Sleep 100
Loop
WSH2.Echo "なんだよ"
WSH2.Quit 9

他方で、

cscript g2.vbs

Set Me1=CreateObject("Shell.Application").Windows().Item(0).GetProperty("WSH")
Me1.WScript.Echo "おい"
Set Me1.WSH2=WScript
Me1.fWait=False
WScript.Sleep 10000

グローバル変数や関数はグローバルオブジェクトのプロパティとメソッドになってます。

« WSHから他のWSHを操作する。 | トップページ | WSHから他のWSHを操作する。(その3) »