我正在尝试编写一些 C(C++ 也很好)实用程序来监视 ActiveX 控件。给定一个窗口的一些 HWND 句柄我想打印
- 该 HWND 的 ActiveX 控件公开了哪些属性和哪些方法
- 可选地,控件实现了哪些接口(interface)
出于测试目的,我将随机 ActiveX 控件(如 Microsoft Slider 控件)嵌入到 ActiveX Control Test Container 中。这样我就知道控件的HWND确实是一个ActiveX控件的窗口。此外,我知道控件公开了哪些属性/方法,因此我可以测试我的工具。
我目前对 (1) 的解决方案是使用 AccessibleObjectFromWindow HWND 上的函数以获取 IDispatch .它有效,但似乎你真的总是只得到一个可访问的接口(interface)(返回的 IDispatch 只是 IAccessible 接口(interface)的 IDispatch 部分)。我尝试将示例控件的实际 CLSID 作为第三个参数传递给 AccessibleObjectFromWindow但这也无济于事。似乎该功能确实名副其实——您总是只能获得辅助功能界面。 :-)
有人知道这样的“ActiveX spy ”是否可能吗?如果是,怎么办?
最佳答案
你没有
如果您有权访问 activex 控件的实现(例如在 ATL 中),您可以使用查找表来返回拥有 HWND 的控件;您可以将其与 global instance table 结合使用
关于c++ - 如何在给定 ActiveX 控件的 HWND 的情况下获得 COM 接口(interface)?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5549827/