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 |
---|---|
|
引數無效。 |
備註
用戶端會在事件攔截函式內呼叫此函式,以取得產生事件的對象或產生事件之專案的父系的 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 |
程式庫 | Oleacc.lib |
Dll | Oleacc.dll |
可轉散發套件 | Windows NT 4.0 上的 Active Accessibility 1.3 RDK 與 SP6 和更新版本和 Windows 95 |