JScriptからCOMコンポーネントのメソッド/プロパティに対してSAFEARRAYを渡す方法

JScriptの配列はSAFEARRAYじゃないので、COMのインターフェースに配列を渡す場合に型がちがうと言われておこられてしまう。

それを回避するには、ScriptControlを使えばいい
ScriptControlはScriptEngineをそのままコンポーネント化したようなやつで、このコンポーネント上で、VBScriptを評価してもらうことでSAFEARRAYを作ることができる。

  vbs = new ActiveXObject('ScriptControl');
  vbs.language = "VBSctrpt";
  ' com は COMオブジェクトの参照、Method()は引数に配列を受け取るメソッドとする
  com.Method(vbs.eval('Array("hoge", "fuga")'));

追記:2010.04.10

Scripting.Dictionaryオブジェクトを使うのがよりスマートな方法。(別エントリのコメントで教えてもらった)
David Wang : HOWTO: Convert between JScript Array and VB Safe Array