用戶端/伺服器通訊
WinEvents 機制提供一種方式,讓伺服器能夠輕鬆地與 Microsoft Active Accessibility 客戶端通訊。 用戶端通常會透過回應 WinEvents 來收集資訊(例如,關注焦點),但可以隨時從伺服器要求資訊。
若要要求產生 WinEvent 之可存取物件的資訊,客戶端必須處理事件,並建立與相關可存取對象的連線。 若要這樣做,用戶端會執行下列六個步驟:
- 伺服器會呼叫 NotifyWinEvent,為每個變更其使用者介面元素產生 WinEvent 通知。
- USER 中的 WinEvent 管理程式代碼會判斷是否有任何用戶端應用程式使用 setWinEventHook setWinEventHook 來註冊 WinEvent 攔截 函式,並呼叫已註冊的回呼函式。
- 在其回呼函式中,用戶端會呼叫 AccessibleObjectFromEvent 或其他可存取物件擷取函式,以要求存取產生事件的物件。 如需詳細資訊,請參閱 擷取 IAccessible 物件。
- 此Microsoft Active Accessibility API 會將伺服器應用程式傳送 WM_GETOBJECT 訊息,以擷取可存取的物件。
- 為了回應 WM_GETOBJECT,伺服器應用程式會傳回零或傳回值,做為產生事件之物件的一次性參考。
- 如果伺服器傳回零,Microsoft Active Accessibility 會建立 Proxy 物件,並將其位址提供給用戶端。 否則,Microsoft Active Accessibility 會使用此參考來擷取物件介面的位址,例如 IAccessible 或 IDispatch,並將該位址提供給用戶端。
用戶端有介面地址之後,就可以呼叫可存取物件的 IAccessible 屬性和方法,以擷取資訊。
在本節中