オレビュー
私
はこの目的のためにOleviewを使用しました(当時は:))
手動/プログラマティック
私が正しく覚えている場合(近くにWindows PCがない):
- クラスはタイプライブラリにリンクする必要があります
- typelibはバイナリ(dll、ocx、exe)を指します
- このバイナリには、解析する必要のある物理タイプライブラリが含まれています
- midlコンパイラはそれを行うことができます(スタブ/ Cヘッダーを生成します)
- oleviewはそれを行うことができます(IDLを抽出します)
- tlbimpはそれを行うことができます
- あなたはWin32APIでそれを行うことができます
- 作成可能なオブジェクトにはマークを付ける必要があります
coclass
(interface
またはsource
;作成可能であると思われるグローバルモジュールもありました:それらが剰余類として定義されているかどうかはわかりません
コードを見せて
ITypeLibおよびITypeInfoインターフェイスを使用して、タイプライブラリ内の情報を読み取ることができます。これらは、ICreateTypeLibおよびICreateTypeInfoインターフェイスを使用して作成できます。ただし、Microsoft IDLコンパイラ(MIDL)は、おそらくICreateTypeおよびICreateTypeInfoを使用する唯一のアプリケーションです。
簡単なグーグルがこの便利なページを見つけました:C++でタイプライブラリを読む。
開始するためのコードのみが含まれています。何か価値があるかどうかを確認するために、クラウドWindowsインスタンスを起動し、すべてのソースを取得してコンパイルしました。
サイトに記載されているオプションとは対照的に、私は単にウィンドウでコンパイルしました
cl.exe *.cpp /EHs ole32.lib oleaut32.lib
楽しみのために、MingWを使用してLinux(64ビット)でコンパイルしました。
i586-mingw32msvc-g++ *.cpp -loleaut32 -lole32 -o Typelib.exe
作業を保存するために、以下を含むzipファイルをダウンロード用に用意しました。
win32_Unicode.cpp - sources by René Nyffenegger
win32_Unicode.h
TestTypelib.cpp
Typelib.cpp
Typelib.h
VariantHelper.cpp
VariantHelper.h
TestTypelib.exe - binary compiled on windows
テスト実行:
# linux: ./a.exe ~/.wine/drive_c/windows/system32/msxml6.dll
C:\Games\Stacko>TestTypelib.exe c:\Windows\System32\msxml6.dll
MSXML2: Microsoft XML, v6.0
Nof Type Infos: 149
IXMLDOMImplementation
----------------------------
Interface: Dispatch
functions: 8
variables: 0
Function : QueryInterface
returns : VT_VOID
flags :
invoke kind: function
params : 2
params opt : 0
Parameter : riid type = VT_PTR (VT_USERDEFINED (GUID)) in
Parameter : ppvObj type = VT_PTR (VT_PTR) out
Function : AddRef
returns : VT_UI4
flags :
invoke kind: function
params : 0
params opt : 0
(snip)および15499行以上
結論
これにより、システムをスキャンして、インストールされた作成可能なCOMコンポーネントを探すための良い出発点になることを願っています。