C#从COM对象获取progID

C#从COM对象获取progID,c#,com,object,marshalling,C#,Com,Object,Marshalling,我想知道是否有办法在c#中获取com对象的progId。我有一个webBrowser对象,它公开了一个文档对象,它是COM。有没有办法确定文档对象的progID是什么 我知道你可以从progID获取对象,只是不知道如何做相反的事情。你可以在上面查询IPersist 这将获得CLSID。然后打电话: 这会让你得到程序ID 编辑: 要查询接口,只需在C#中执行转换: 在幕后,这就是实际发生的事情,如C++中所示: IUnknown *pUnk = // ... get object from so

我想知道是否有办法在c#中获取com对象的progId。我有一个webBrowser对象,它公开了一个文档对象,它是COM。有没有办法确定文档对象的progID是什么


我知道你可以从progID获取对象,只是不知道如何做相反的事情。

你可以在上面查询
IPersist

这将获得
CLSID
。然后打电话:

这会让你得到程序ID

编辑:

要查询接口,只需在C#中执行转换:

在幕后,这就是实际发生的事情,如C++中所示:

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

IPersist *pPersist = 0;
if (SUCCEEDED(pUnk->QueryInterface(IID_IPersist, (void **)&pPersist)))
{
    // phew, it worked...
}
(但如今没有人会费心手工写这些东西,因为智能指针几乎可以模拟C#体验。)

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

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