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