我想知道是否有办法在c#中获取com对象的progId。例如,我有一个webBrowser对象,它公开了一个COM文档对象。有没有办法弄清楚文档对象的progID是什么?
我知道你可以从progID获取对象,只是不确定如何做相反的事情。
发布于 2009-08-10 06:46:36
您可以查询IPersist,并对其执行GetClassID。
这样你就可以得到CLSID了。然后调用ProgIDFromCLSID
The pinvoke declaration is here.
这样你就可以得到ProgID了。
编辑:
要查询接口,只需在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#体验。)
https://stackoverflow.com/questions/1253368
复制相似问题