O que são objetos proxy?
Um objeto proxy atua como um intermediário entre o cliente e um objeto acessível. A finalidade do objeto proxy é monitorar o tempo de vida do objeto acessível e encaminhar chamadas para o objeto acessível somente se ele não for destruído.
Quando um cliente chama uma propriedade IAccessible para obter informações sobre um objeto , o objeto proxy deve marcar se o objeto acessível ainda está disponível. Se for, o objeto proxy passará a solicitação do cliente para o objeto acessível. Se o objeto acessível for destruído (por exemplo, quando uma caixa de diálogo com controles personalizados for fechada), o objeto proxy retornará um erro. Para indicar que o objeto foi destruído, é recomendável que os servidores retornem o código de erro CO_E_OBJNOTCONNECTED porque esse erro é retornado pelo COM (Component Object Model) após um servidor chamar CoDisconnectObject.
O objeto proxy é transparente para o cliente. Quando o cliente chama AccessibleObjectFromEvent, AccessibleObjectFromPoint ou AccessibleObjectFromWindow, ele recebe de volta um ponteiro para uma interface IAccessible . No entanto, quando o cliente usa esse ponteiro para chamar qualquer uma das propriedades ou métodos IAccessible , o código executado está dentro do objeto proxy.