什么是代理对象?

代理对象充当客户端和可访问对象之间的中介。 代理对象的用途是监视可访问对象的生命周期,并且仅当辅助对象未销毁时才将调用转发给辅助对象。

当客户端调用 IAccessible 属性以获取有关对象的信息时,代理对象必须检查可访问对象是否仍然可用。 如果是,则代理对象将客户端的请求传递给可访问对象。 例如,如果 (销毁可访问对象,则当) 关闭包含自定义控件的对话框时,代理对象将返回错误。 若要指示对象已被销毁,建议服务器 CO_E_OBJNOTCONNECTED 返回错误代码,因为此错误是由组件对象模型 (COM) 在服务器调用 CoDisconnectObject 之后返回的。

代理对象对客户端是透明的。 当客户端调用 AccessibleObjectFromEventAccessibleObjectFromPointAccessibleObjectFromWindow 时,它会接收指向 IAccessible 接口的指针。 但是,当客户端使用此指针调用任何 IAccessible 属性或方法时,执行的代码位于代理对象内。