com

ActiveX EXE や DLL, OCX(いわゆるCOM)が公開している Type Library 情報をダンプするスクリプト

VB6でCOMコンポーネントを開発してると、TypeLibIDとかCLSIDの不一致でソースコードが開けなくなったり、いままで動いていたプログラムが動かなくなったりという場面によく遭遇します。(とくにCOMコンポーネントの開発に不慣れで「COM」というものをよく理…

ActiveXコンポーネントによって登録されるレジストリ

[VB] ActiveX コンポーネントで作成されるレジストリ エントリに載ってはいるんだけど、文章だけではイメージができなかったので図にしてみた。関係ないが、文章が苦手な自分としては、ブラウザ上でササッと図が描けてしまう Google Drawings はすごく便利。

CComSafeArrayを使って生成した配列を返すCOMのメソッド

CComSafeArrayクラスを使うと、以下のように簡単にSAFEARRAY構造体を簡単に扱うことができる。 STDMETHODIMP CHoge::get_Array(VARIANT* pVal) { VariantInit(pVal); pVal->vt = VT_ARRAY | VT_BSTR; CComSafeArray<BSTR> psa; psa.Add(ComBSTR("hoge")); psa.Add(</bstr>…

COMで配列の受け渡しがどのよう行なわれているか調べたメモ

ATLでCOMサーバ作ってみて、配列の受け渡しが難しかったので調べた。 テスト用に渡されたパラメータの型に関する情報を文字列で返す簡単なCOMサーバを作って試してみた。 テスト用のCOMサーバのソースは後述する。※なお、Method() と書くべきところを Mthod(…

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

JScriptの配列はSAFEARRAYじゃないので、COMのインターフェースに配列を渡す場合に型がちがうと言われておこられてしまう。それを回避するには、ScriptControlを使えばいい ScriptControlはScriptEngineをそのままコンポーネント化したようなやつで、このコ…