Partager via


Guide pratique pour exposer un fournisseur de Server-Side UI Automation

Cette rubrique contient un exemple de code qui montre comment exposer un fournisseur Microsoft UI Automation côté serveur pour un contrôle personnalisé.

Microsoft UI Automation envoie le message WM_GETOBJECT à une application fournisseur pour récupérer des informations sur un objet accessible pris en charge par le fournisseur. UI Automation envoie WM_GETOBJECT lorsqu’un client appelle IUIAutomation::ElementFromHandle, ElementFromPoint et GetFocusedElement, et lors de la gestion des événements pour lesquels le client s’est inscrit.

Lorsqu’un fournisseur reçoit un message WM_GETOBJECT, il doit case activée si le paramètre lParam est égal à UiaRootObjectId. Si tel est le cas, le fournisseur doit retourner l’interface IRawElementProviderSimple de l’objet . Le fournisseur retourne l’interface en appelant la fonction UiaReturnRawElementProvider .

L’exemple suivant montre comment répondre à 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;
        }

Conceptuel

Implémentation d’un fournisseur de Server-Side UI Automation

The WM_GETOBJECT Message

Rubriques de procédures pour les fournisseurs de UI Automation