【问题标题】:C# Get progID from COM objectC# 从 COM 对象获取 progID
【发布时间】:2010-11-18 05:03:05
【问题描述】:

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

我知道你可以从 progID 中获取对象,只是不知道如何反过来。

【问题讨论】:

    标签: c# com object marshalling


    【解决方案1】:

    你可以在上面查询IPersistGetClassID

    这会让你得到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# 体验。)

    【讨论】:

      猜你喜欢
      • 2012-11-01
      • 1970-01-01
      • 2020-06-17
      • 2012-08-08
      • 2017-11-04
      • 1970-01-01
      • 2011-09-08
      • 2012-10-13
      • 1970-01-01
      相关资源
      最近更新 更多