0

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

这甚至可能吗?

任何帮助将非常感激 :)

4

1 回答 1

1

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

如果您解释为什么您实际上会考虑做这样的事情,您可能会得到更好的答案。在不知道参数的含义或副作用可能是什么的情况下调用 IDispatch::Invoke() 是灾难的根源。远离方法名称,如“ReformatDrive”。

于 2009-11-18T16:00:44.597 回答