AccessibleObjectFromEvent 函数 (oleacc.h)
检索对象的 IAccessible 接口的地址,该对象生成当前正由客户端的事件挂钩函数处理的事件。
语法
HRESULT AccessibleObjectFromEvent(
[in] HWND hwnd,
[in] DWORD dwId,
[in] DWORD dwChildId,
[out] IAccessible **ppacc,
[out] VARIANT *pvarChild
);
参数
[in] hwnd
类型: HWND
指定生成事件的窗口的窗口句柄。 此值必须是发送到事件挂钩函数的窗口句柄。
[in] dwId
类型: DWORD
指定生成事件的 对象的对象 ID。 此值必须是发送到事件挂钩函数的对象 ID。
[in] dwChildId
类型: DWORD
指定事件是由对象还是其子元素之一触发。 如果对象触发了事件, 则 dwChildID CHILDID_SELF。 如果子元素触发了事件, 则 dwChildID 是元素的子 ID。 此值必须是发送到事件挂钩函数的子 ID。
[out] ppacc
类型: IAccessible**
接收 IAccessible 接口地址的指针变量的地址。 接口适用于生成事件的 对象,或用于生成事件的元素的父级。
[out] pvarChild
类型: VARIANT*
VARIANT 结构的地址,该结构指定可用于访问有关 UI 元素的信息的子 ID。
返回值
类型: STDAPI
如果成功,则返回 S_OK。
如果未成功,则返回以下任一或另一个标准 COM 错误代码。
返回代码 | 说明 |
---|---|
|
自变量无效。 |
注解
客户端在事件挂钩函数中调用此函数,以获取一个 IAccessible 接口指针,该指针指向生成事件的对象或生成事件的元素的父级。 发送到 WinEventProc 回调函数的参数必须用于此函数的 hwnd、 dwObjectID 和 dwChildID 参数。
此函数检索与事件关联的对象层次结构中最低级别的可访问对象。 如果生成事件的元素不是可访问对象 (即不支持 IAccessible) ,则该函数将检索父对象的 IAccessible 接口。 父对象必须通过 IAccessible 接口提供有关子元素的信息。
与其他 IAccessible 方法和函数一样,由于用户操作,客户端可能会收到 IAccessible 接口指针的错误。 有关详细信息,请参阅 接收 IAccessible 接口指针的错误。
如果调用此函数以响应 EVENT_OBJECT_CREATE ,则此函数失败,因为对象未完全初始化。 同样,客户端不应为响应 EVENT_OBJECT_DESTROY 调用此对象,因为对象不再可用且无法响应。 客户端watch EVENT_OBJECT_SHOW和EVENT_OBJECT_HIDE事件,而不是EVENT_OBJECT_CREATE和EVENT_OBJECT_DESTROY。
示例
以下示例代码演示在 WinEventProc 事件处理程序中调用此方法。
void CALLBACK HandleWinEvent(HWINEVENTHOOK hook, DWORD event, HWND hwnd,
LONG idObject, LONG idChild,
DWORD dwEventThread, DWORD dwmsEventTime)
{
IAccessible* pAcc = NULL;
VARIANT varChild;
HRESULT hr = AccessibleObjectFromEvent(hwnd, idObject, idChild, &pAcc, &varChild);
if ((hr == S_OK) && (pAcc != NULL))
{
// Do something with the accessible object, then release it.
// ...
pAcc->Release();
}
}
要求
要求 | 值 |
---|---|
最低受支持的客户端 | Windows 2000 Professional [仅限桌面应用] |
最低受支持的服务器 | Windows Server 2003 [仅限桌面应用] |
目标平台 | Windows |
标头 | oleacc.h |
Library | Oleacc.lib |
DLL | Oleacc.dll |
可再发行组件 | 具有 SP6 及更高版本和 Windows 95 的 Windows NT 4.0 上的活动辅助功能 1.3 RDK |