Como expor um provedor de Server-Side Automação da Interface do Usuário

Este tópico contém código de exemplo que mostra como expor um provedor microsoft Automação da Interface do Usuário do lado do servidor para um controle personalizado.

O Microsoft Automação da Interface do Usuário envia a mensagem WM_GETOBJECT para um aplicativo provedor para recuperar informações sobre um objeto acessível com suporte pelo provedor. Automação da Interface do Usuário envia WM_GETOBJECT quando um cliente chama IUIAutomation::ElementFromHandle, ElementFromPoint e GetFocusedElement e ao manipular eventos para os quais o cliente se registrou.

Quando um provedor recebe uma mensagem WM_GETOBJECT, ele deve marcar se o parâmetro lParam é igual a UiaRootObjectId. Se for, o provedor deverá retornar a interface IRawElementProviderSimple do objeto. O provedor retorna a interface chamando a função UiaReturnRawElementProvider .

O exemplo a seguir demonstra como responder a WM_GETOBJECT.

    // Expose the custom button's server-side provider to UI Automation.
    case WM_GETOBJECT:
        {
            // If lParam matches UiaRootObjectId, return IRawElementProviderSimple.
            if (static_cast<long>(lParam) == static_cast<long>(UiaRootObjectId))
            {
                // Retrieve the pointer to the custom button object from the
                // window data.
                CustomButton* pControl = reinterpret_cast<CustomButton*>(
                    GetWindowLongPtr(hwnd, GWLP_USERDATA));

                // Call an application-defined method to get the
                // IRawElementProviderSimple pointer.
                IRawElementProviderSimple* pRootProvider = 
                    pControl->GetUIAutomationProvider(hwnd);

                // Return the IRawElementProviderSimple pointer to UI Automation.
                return UiaReturnRawElementProvider(hwnd, wParam, lParam, 
                    pRootProvider);
            }
            return 0;
        }

Conceitual

Implementando um provedor de Server-Side Automação da Interface do Usuário

A mensagem WM_GETOBJECT

Tópicos de instruções para provedores de Automação da Interface do Usuário