使用 AccessibleObjectFromWindow 获取 HWND 对应的 IDispatch 接口
要通过 hwnd 获取 IDispatch,需要使用 AccessibleObjectFromWindow 函数。具体步骤如下:
-
定义一个 IDispatch 指针变量,用于存储获取到的 IDispatch 接口指针。
-
调用 AccessibleObjectFromWindow 函数,传入 hwnd 参数和 OBJID_NATIVEOM 参数,获取 IAccessible 接口指针。
-
调用 IAccessible 接口的 get_accParent 方法,获取父级 IAccessible 接口指针。
-
调用父级 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();
}
原文地址: https://www.cveoy.top/t/topic/oNsP 著作权归作者所有。请勿转载和采集!