客户端/服务器通信

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 将创建一个代理对象并将其地址提供给客户端。 否则,Microsoft Active Accessibility 使用此引用来检索对象接口(如 IAccessibleIDispatch)的地址,并将该地址提供给客户端。

客户端具有接口地址后,可以调用可访问对象的 IAccessible 属性和方法以检索信息。

在本节中