枚举计算机上的所有IDispatch实现对象

时间:2009-11-18 14:06:17

标签: c++ com winapi idispatch

我想枚举一台机器上的所有IDispatch支持对象。目前我需要知道类id或prog id是什么,但是,为了检查我的机器,我想知道我是否可以枚举实现IDispatch的所有对象。

这甚至可能吗?

非常感谢任何帮助:)

1 个答案:

答案 0 :(得分:1)

这是一个非常奇怪的请求。摩擦符合“所有”规定。通过HKCR \ Typelib键和LoadTypeLib()进行简单枚举是不够的,不需要COM服务器来发布类型库。你实际上必须使用CoCreateInstance()coclass和IDispatch的QueryInterface。这不仅速度慢,而且风险也很大。

如果你解释为什么你会考虑做这样的事情,你可能会得到一个更好的答案。调用IDispatch :: Invoke()而不必知道参数的含义或副作用可能是灾难的一种方法。远离“ReformatDrive”等方法名称。