Gra*_*ant 9 c# com object marshalling
我想知道是否有办法在c#中获取com对象的progId.例如 - 我有一个webBrowser对象,它暴露了一个COM文档对象.有没有办法弄清楚该文档对象的progID是什么?
我知道你可以从progID获取对象,只是不知道如何做反过来.
您可以在其上查询IPersist和GetClassID.
这让你了CLSID.然后调用ProgIDFromCLSID:
这会让你成为ProgID.
编辑:
要查询接口,只需在C#中进行强制转换:
IPersist p = myObj as IPersist;
if (p != null)
{
// phew, it worked...
}
Run Code Online (Sandbox Code Playgroud)
在幕后,这就是实际发生的事情,如C++中所示:
IUnknown *pUnk = // ... get object from somewhere
IPersist *pPersist = 0;
if (SUCCEEDED(pUnk->QueryInterface(IID_IPersist, (void **)&pPersist)))
{
// phew, it worked...
}
Run Code Online (Sandbox Code Playgroud)
(但是现在没有人会手工编写这些东西,因为智能指针几乎可以模拟C#体验.)