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

指定產生事件之物件的物件識別碼。 這個值必須是傳送至事件攔截函式的物件標識碼。

[in] dwChildId

類型: DWORD

指定事件是由物件或其其中一個子專案所觸發。 如果對象觸發事件, dwChildID 會CHILDID_SELF。 如果子元素觸發事件, dwChildID 是元素的子標識碼。 這個值必須是傳送至事件攔截函式的子標識碼。

[out] ppacc

類型: IAccessible**

接收 IAccessible 介面地址的指標變數位址。 介面適用於產生事件的物件,或針對產生事件之專案的父代。

[out] pvarChild

類型: VARIANT*

VARIANT 結構的位址,指定可用來存取 UI 元素相關信息的子識別碼。

傳回值

類型: STDAPI

如果成功,則傳回 S_OK。

如果未成功,則傳回下列其中一個或另一個標準 COM 錯誤碼

傳回碼 Description
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
程式庫 Oleacc.lib
Dll Oleacc.dll
可轉散發套件 Windows NT 4.0 上的 Active Accessibility 1.3 RDK 與 SP6 和更新版本和 Windows 95

另請參閱

AccessibleObjectFromPoint

AccessibleObjectFromWindow

IAccessible

變異

WinEventProc