Come esporre un provider di Server-Side Automazione interfaccia utente

Questo argomento contiene codice di esempio che illustra come esporre un provider microsoft Automazione interfaccia utente lato server per un controllo personalizzato.

Microsoft Automazione interfaccia utente invia il messaggio di WM_GETOBJECT a un'applicazione provider per recuperare informazioni su un oggetto accessibile supportato dal provider. Automazione interfaccia utente invia WM_GETOBJECT quando un client chiama IUIAutomation::ElementFromHandle, ElementFromPoint e GetFocusedElement e quando gestisce gli eventi per cui è stato registrato il client.

Quando un provider riceve un messaggio di WM_GETOBJECT , deve verificare se il parametro lParam è uguale a UiaRootObjectId. In caso affermativo, il provider deve restituire l'interfaccia IRawElementProviderSimple dell'oggetto. Il provider restituisce l'interfaccia chiamando la funzione UiaReturnRawElementProvider .

Nell'esempio seguente viene illustrato come rispondere alle 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;
        }

Informazioni concettuali

Implementazione di un provider di Server-Side Automazione interfaccia utente

Messaggio WM_GETOBJECT

Argomenti di procedura per i provider di Automazione interfaccia utente