我需要编写一个从COM对象中动态提取progid的函数。
这个是可能的吗?
做这件事最好的方法是什么?
编辑:我需要处理的所有coclasses都实现了IProvideClassInfo
发布于 2012-11-13 22:32:05
首先,不能保证信息在第一时间是可用的。即使您只是使用ProgID实例化了一个对象,也可能无法将其取回。
最简单的方法是查询IPersist和朋友之一(IPersistStream等)。接口,并调用IPersist::GetClassID获取CLSID。然后使用ProgIDFromCLSID或通过注册表查找转换为ProgID。
另一种选择是查询IProvideClassInfo和IProvideClassInfo2,以这种替代方式访问感兴趣的CLSID。
第三种选择是查询IDispatch并尝试打开类型库,然后遍历查找coclass信息。
https://stackoverflow.com/questions/13362113
复制相似问题