8
我想知道是否有一種方法可以獲取c#中com對象的progId。例如 - 我有一個webBrowser對象,公開一個文檔對象,它是COM。有沒有辦法找出該文檔對象的progID是什麼?C#從COM對象獲取progID
我知道你可以從progID獲得對象,只是不知道如何做另一種方式。
我想知道是否有一種方法可以獲取c#中com對象的progId。例如 - 我有一個webBrowser對象,公開一個文檔對象,它是COM。有沒有辦法找出該文檔對象的progID是什麼?C#從COM對象獲取progID
我知道你可以從progID獲得對象,只是不知道如何做另一種方式。
您可以查詢IPersist
和GetClassID就可以了。
讓你的CLSID
。然後調用ProgIDFromCLSID:
The pinvoke declaration is here.
,讓你的進程id。
編輯:
要查詢的接口,你只是做在C#中投:
IPersist p = myObj as IPersist;
if (p != null)
{
// phew, it worked...
}
在幕後,這是什麼是實際發生的,如下所示的C++:
IUnknown *pUnk = // ... get object from somewhere
IPersist *pPersist = 0;
if (SUCCEEDED(pUnk->QueryInterface(IID_IPersist, (void **)&pPersist)))
{
// phew, it worked...
}
(但是現在沒人會用手寫這些東西,因爲智能指針幾乎可以模擬C#的經驗。)