用戶端/伺服器通訊

WinEvents機制提供一種方式,讓伺服器能夠輕鬆地與 Microsoft Active Accessibility 用戶端通訊。 用戶端通常會透過回應 WinEvents (來收集資訊,例如,遵循焦點) ,但可以隨時向伺服器要求資訊。

若要要求產生 WinEvent 之可存取物件的資訊,用戶端必須處理事件,並建立與相關可存取物件的連線。 若要這樣做,用戶端會執行下列六個步驟:

  • 伺服器會呼叫 NotifyWinEvent ,針對其使用者介面元素的每個變更產生 WinEvent 通知。
  • USER 中的 WinEvent 管理程式碼會判斷是否有任何用戶端應用程式使用SetWinEventHook 註冊 WinEvent攔截函式,並呼叫已註冊的回呼函式。
  • 在其回呼函式中,用戶端會呼叫 AccessibleObjectFromEvent 或其他可存取的物件擷取函式,要求存取產生事件的 物件。 如需詳細資訊,請參閱 擷取 IAccessible 物件
  • 此 Microsoft Active Accessibility API 會將伺服器應用程式傳送 WM_GETOBJECT 訊息,以擷取可存取的物件。
  • 為了回應 WM_GETOBJECT,伺服器應用程式會傳回零或傳回值,做為產生事件之物件的一次性參考。
  • 如果伺服器傳回零,Microsoft Active Accessibility 會建立 Proxy 物件,並將其位址提供給用戶端。 否則,Microsoft Active Accessibility 會使用此參考來擷取物件介面的位址,例如 IAccessibleIDispatch,並將該位址提供給用戶端。

一旦用戶端有介面位址,就可以呼叫可存取物件的 IAccessible 屬性和方法,以擷取資訊。

本節內容