2009-08-10 24 views
8

私は、C#でcomオブジェクトのprogIdを取得する方法があるかどうかを知りたいと思います。例えば、私はCOMであるドキュメントオブジェクトを公開するwebBrowserオブジェクトを持っています。そのドキュメントオブジェクトのprogIDが何であるか把握する方法はありますか?C#COMオブジェクトからprogIDを取得

私はprogIDからオブジェクトを取得できることは知っていますが、他の方法をどうやって行うのか分かりません。

答えて

8

IPersistGetClassIDをクエリできます。

それはCLSIDを取得します。そして、ProgIDFromCLSIDを呼び出す:あなたのProgIDを取得

The pinvoke declaration is here.

EDIT:舞台裏

IPersist p = myObj as IPersist; 
if (p != null) 
{ 
    // phew, it worked... 
} 

、これはC++で、ここで示したように、実際に、何が起こっているかです::

インターフェイスを照会するには、あなただけのC#でキャストを行います

IUnknown *pUnk = // ... get object from somewhere 

IPersist *pPersist = 0; 
if (SUCCEEDED(pUnk->QueryInterface(IID_IPersist, (void **)&pPersist))) 
{ 
    // phew, it worked... 
} 

(しかし、誰が、スマートポインタはかなりC#の経験をシミュレートすることができますように、これらの日の手でその原料を書いて気にしない。)

関連する問題