3

我需要编写一个从 COM 对象中动态提取 progid 的函数。

这可能吗?

最好的方法是什么?

编辑:我需要处理的所有 coclasses 实现 IProvideClassInfo

4

1 回答 1

5

首先,不能保证信息首先可用。即使您只是使用 ProgID 实例化了一个对象,您也可能无法取回它。

最简单的方法是查询其中一个IPersist和朋友(IPersistStream等)接口,然后调用IPersist::GetClassID获取CLSID. ProgIDFromCLSID然后使用或通过注册表查找转换为 ProgID 。

另一种选择是以这种替代方式查询IProvideClassInfoIProvideClassInfo2访问感兴趣的 CLSID。

第三个选项,如果以上两个都不起作用,则查询IDispatch并尝试打开类型库,然后遍历查找 coclass 信息。

于 2012-11-13T14:32:05.440 回答