NotifyWinEvent 函式 (winuser.h)

表示發生預先定義之事件的系統。 如果有任何用戶端應用程式已註冊事件的攔截函式,系統就會呼叫客戶端的攔截函式。

語法

void NotifyWinEvent(
  [in] DWORD event,
  [in] HWND  hwnd,
  [in] LONG  idObject,
  [in] LONG  idChild
);

參數

[in] event

類型: DWORD

指定發生的事件。 此值必須是其中一個 事件常數

[in] hwnd

類型: HWND

包含產生事件之物件的視窗句柄。

[in] idObject

類型: LONG

識別產生事件的物件。 此值為其中一個預先定義的 物件標識碼 或自定義物件標識碼值。

[in] idChild

類型: LONG

識別事件是由物件或物件的子專案所產生。 如果此值CHILDID_SELF,則事件是由物件本身產生。 如果沒有CHILDID_SELF,這個值就是產生事件之專案的子標識符。

傳回值

備註

伺服器會呼叫此函式,以通知系統發生事件。 Microsoft Active Accessibility 會檢查是否有任何用戶端應用程式已設定事件的攔截程式,如果是的話,會呼叫適當的攔截程式。

如果未為事件註冊任何攔截程式,呼叫此函式的效能會是次要的。

伺服器呼叫 NotifyWinEvent ,在事件發生後向系統宣告事件;在事件發生之前,他們絕對不能通知系統事件。

呼叫客戶端的攔截程式時,它會收到一些參數,描述事件和產生事件的物件。 攔截程式會使用 AccessibleObjectFromEvent 函式來擷取產生事件之物件的 IAccessible 介面指標。

伺服器可能會在呼叫此函式之後立即收到 WM_GETOBJECT 訊息。 如果有任何在事件回呼中呼叫 AccessibleObjectFromEvent 的內容內用戶端,就會發生這種情況。

當伺服器呼叫此函式時,它們必須準備好處理 WM_GETOBJECT、傳回 IAccessible 介面指標,以及處理任何 IAccessible 方法。

伺服器開發人員注意事項: 當您呼叫 NotifyWinEvent 時,如果有任何用戶端在內容中接聽該事件,其事件處理程式通常會傳送 WM_GETOBJECT 並呼叫 IAccessible 方法,則會在 NotifyWinEvent 傳回之前執行。 當您呼叫 NotifyWinEvent 時,如果發生這些呼叫,您應該準備好處理這些呼叫。 如果您需要執行額外的設定以允許這麼做,您應該在呼叫 NotifyWinEvent 之前執行這項操作,而不是之後。

規格需求

需求
最低支援的用戶端 Windows 2000 專業版 [僅限傳統型應用程式]
最低支援的伺服器 Windows Server 2003 [僅限傳統型應用程式]
目標平台 Windows
標頭 winuser.h (包括 Windows.h)
程式庫 User32.lib
Dll User32.dll
可轉散發套件 sp6 和更新版本和 Windows 95 Windows NT 4.0 上的 Active Accessibility 1.3 RDK
API 集合 ext-ms-win-ntuser-server-l1-1-0 (於 Windows 8)

另請參閱

AccessibleObjectFromEvent

SetWinEventHook

UnHookWinEvent

WinEvents