3

COM オブジェクトから progid を動的に抽出する関数を作成する必要があります。

これは可能ですか?

それを行う最良の方法は何ですか?

編集: IProvideClassInfo を実装する処理が必要なすべてのコクラス

4

1 に答える 1

5

まず第一に、情報が最初から利用できるという保証はありません。ProgID を使用してオブジェクトをインスタンス化しただけでも、元に戻すことはできません。

IPersist最も簡単な方法は、とフレンド (など)のいずれかのインターフェイスにクエリを実行しIPersistStream、 を呼び出しIPersist::GetClassIDて を取得することCLSIDです。ProgIDFromCLSID次に、レジストリ ルックアップを使用して、または経由して ProgID に変換します。

もう 1 つのオプションは、この別の方法で目的の CLSIDを照会IProvideClassInfoしてアクセスすることです。IProvideClassInfo2

上記の 2 つの方法のいずれもうまくいかなかった場合の 3 番目のオプションは、クエリIDispatchを実行してタイプ ライブラリを開き、コクラス情報の検索を繰り返すことです。

于 2012-11-13T14:32:05.440 に答える