如何在给出ActiveX控件的HWND的情况下获得COM接口?

Fre*_*abe 6 c++ com winapi activex

我正在尝试编写一个用于监视ActiveX控件的小C(C++也很好)实用程序.鉴于我想要打印的窗口的一些HWND句柄

  1. ActiveX控件为此HWND公开了哪些属性和哪些方法
  2. 可选地,控件实现什么接口

出于测试目的,我将随机ActiveX控件(如Microsoft Slider控件)嵌入到ActiveX控件测试容器中,以便我知道控件的HWND确实是ActiveX控件的窗口.此外,我知道控件公开了哪些属性/方法,所以我可以测试我的工具.

我目前的(1)解决方案是使用HWND上的AccessibleObjectFromWindow函数来获取IDispatch.它可以工作,但似乎你总是只返回一个可访问的接口(返回的IDispatch只是IAccessible接口的IDispatch部分).我尝试将我的示例控件的实际CLSID作为第三个参数传递给AccessibleObjectFromWindow,但这也没有帮助.似乎该功能真正符合其名称 - 您始终只能获得辅助功能界面.:-)

有人知道这样的"ActiveX间谍"是否可行?如果是这样,怎么样?

seh*_*ehe 1

你不

如果您有权访问 ActiveX 控件的实现(例如在 ATL 中),您可以使用查找表来返回拥有 HWND 的控件;您可以将其与全局实例表结合使用

  • 如果我有权访问 HWND **并且**可以导入所需的控件 COM 接口(作为 RCW),是否可以调用控件上的 COM 接口方法?如果是这样,怎么办? (2认同)