Last Updated 2005/07/20
Programming Tips Visual C++ OCX  索 引 
OCXの情報
2005/07/20

OCX の情報を取得する.

OCX はレジストリにて管理されている.
その構造は以下の様になっている.

    HKEY_CLASSES_ROOT
     |- 登録された拡張子のリスト
     |
     |- コンポーネントの ProgID のリスト
     |   |- CLSID -> {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX}
     |
     |- CLSID
     |   |- {XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX} -> コンポーネント名
         |   |- InprocServer32 -> コンポーネントの場所
             |- ProgID         -> プログラムID
             |


\HKEY_CLASSES_ROOT\CLSID 以下を全て調べれば登録されているコンポーネントが分かる.
しかし,これでは OCX 以外のコンポーネントも含まれてしまう.

OCX を抜き出すには以下と逆のことをすればよい.
以下は OLE オブジェクト(OCX 以外)の一覧を出力するための条件である.

・HKEY_CLASSES_ROOT 直下で "." から始まっていない
・HKEY_CLASSES_ROOT\[Class_Name]\Protocol\StdFileEditing\Server が存在する

この2つの条件を満たせば OLE サーバーである.


もうひとつの方法は,コンポーネントカテゴリマネージャを使用する.
コンポーネントカテゴリマネージャに実装されている
ICatInformation
というインターフェイスを利用すればレジストリを直接触らずに情報を得ることが出来る.


参照
前後のTips
OCXの情報

DSS ProgrammingTipsCGI Ver2.02