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 错误代码

返回代码 说明
E_INVALIDARG
自变量无效。

注解

客户端在事件挂钩函数中调用此函数,以获取一个 IAccessible 接口指针,该指针指向生成事件的对象或生成事件的元素的父级。 发送到 WinEventProc 回调函数的参数必须用于此函数的 hwnddwObjectIDdwChildID 参数。

此函数检索与事件关联的对象层次结构中最低级别的可访问对象。 如果生成事件的元素不是可访问对象 (即不支持 IAccessible) ,则该函数将检索父对象的 IAccessible 接口。 父对象必须通过 IAccessible 接口提供有关子元素的信息。

与其他 IAccessible 方法和函数一样,由于用户操作,客户端可能会收到 IAccessible 接口指针的错误。 有关详细信息,请参阅 接收 IAccessible 接口指针的错误

如果调用此函数以响应 EVENT_OBJECT_CREATE ,则此函数失败,因为对象未完全初始化。 同样,客户端不应为响应 EVENT_OBJECT_DESTROY 调用此对象,因为对象不再可用且无法响应。 客户端watch EVENT_OBJECT_SHOWEVENT_OBJECT_HIDE事件,而不是EVENT_OBJECT_CREATEEVENT_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

另请参阅

AccessibleObjectFromPoint

AccessibleObjectFromWindow

IAccessible

VARIANT

WinEventProc