什么是代理对象?
代理 对象充当客户端和可访问对象之间的中介。 代理对象的用途是监视可访问对象的生命周期,并且仅在该对象未被销毁时将调用转发给它。
当客户端调用 IAccessible 属性以获取有关对象的信息时,代理对象必须检查可访问对象是否仍然可用。 如果是,代理对象会将客户端的请求传递给可访问的对象。 如果可访问对象被销毁(例如,关闭具有自定义控件的对话框时),代理对象将返回错误。 若要指示对象已被销毁,建议服务器返回错误代码 CO_E_OBJNOTCONNECTED,因为在服务器调用 CoDisconnectObject后,组件对象模型返回此错误。
代理对象对客户端是透明的。 当客户端调用 AccessibleObjectFromEvent、AccessibleObjectFromPoint或 AccessibleObjectFromWindow时,它将接收指向 IAccessible 接口的指针。 但是,当客户端使用此指针调用任何 IAccessible 属性或方法时,所执行的代码位于代理对象中。