要通过 hwnd 获取 IDispatch,需要使用 AccessibleObjectFromWindow 函数。具体步骤如下:

  1. 定义一个 IDispatch 指针变量,用于存储获取到的 IDispatch 接口指针。

  2. 调用 AccessibleObjectFromWindow 函数,传入 hwnd 参数和 OBJID_NATIVEOM 参数,获取 IAccessible 接口指针。

  3. 调用 IAccessible 接口的 get_accParent 方法,获取父级 IAccessible 接口指针。

  4. 调用父级 IAccessible 接口的 QueryInterface 方法,获取 IDispatch 接口指针。

示例代码如下:

IDispatch* pDispatch = NULL;
IAccessible* pAccessible = NULL;
HWND hwnd = GetForegroundWindow();

// 获取 IAccessible 接口
if (SUCCEEDED(AccessibleObjectFromWindow(hwnd, OBJID_NATIVEOM, IID_IAccessible, (void**)&pAccessible)))
{
    // 获取父级 IAccessible 接口
    IAccessible* pParentAccessible = NULL;
    if (SUCCEEDED(pAccessible->get_accParent(&pParentAccessible)))
    {
        // 获取 IDispatch 接口
        if (SUCCEEDED(pParentAccessible->QueryInterface(IID_IDispatch, (void**)&pDispatch)))
        {
            // 成功获取 IDispatch 接口
            // ...
        }
        pParentAccessible->Release();
    }
    pAccessible->Release();
}
使用 AccessibleObjectFromWindow 获取 HWND 对应的 IDispatch 接口

原文地址: https://www.cveoy.top/t/topic/oNsP 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录