2009-11-18 93 views
0

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

这甚至可能吗?

任何帮助将不胜感激:)

回答

1

这是一个非常奇怪的请求。摩擦是在“全部”规定。通过HKCR \ Typelib键和LoadTypeLib()的简单枚举是不够的,COM服务器不需要发布类型库。您实际上必须为CoCreateInstance()创建IDispatch的coclass和QueryInterface。这不仅速度慢,而且风险也很大。

如果你解释为什么你真的想要做这样的事情,你可能会得到更好的答案。调用IDispatch :: Invoke()时没有某种想法,这些参数意味着什么,或者副作用可能是灾难的秘诀。远离“ReformatDrive”之类的方法名称。

+0

在寻找IDispatch实现方面,它确实有点学术性。其他的事情我很感兴趣,看看有什么可用的,或者不好,或者有,记录。我希望你可以创建一个IEnum *,找到它们。我假设ClassIDs都在注册表中,或者这是否,必然,这种情况.... – Goz 2009-11-18 17:53:54

+0

我应该补充我很清楚我可能意外释放的破坏,但同样,我非常了解可以从这样做中获得力量...... – Goz 2009-11-18 17:57:45