gpt4 book ai didi

c++ - 如何在给定 ActiveX 控件的 HWND 的情况下获得 COM 接口(interface)?

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:44:32 25 4
gpt4 key购买 nike

我正在尝试编写一些 C(C++ 也很好)实用程序来监视 ActiveX 控件。给定一个窗口的一些 HWND 句柄我想打印

  1. 该 HWND 的 ActiveX 控件公开了哪些属性和哪些方法
  2. 可选地,控件实现了哪些接口(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/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com