Поделиться через


Как вернуть свойства от поставщика автоматизации пользовательского интерфейса

В этом разделе содержится пример кода, показывающий, как поставщик службы автоматизации пользовательского интерфейса Майкрософт возвращает свойства элемента пользовательского интерфейса клиентским приложениям.

Чтобы получить значение свойства от поставщика, служба автоматизации пользовательского интерфейса вызывает реализацию поставщика метода IRawElementProviderSimple::GetPropertyValue, передав идентификатор свойства для получения, а также указатель на структуру VARIANT. Если поставщик поддерживает указанное свойство, он копирует тип данных и значение свойства в структуру VARIANT. Если свойство не поддерживается, поставщик устанавливает для члена vt структуры VARIANT значение VT_EMPTY.

IFACEMETHODIMP Provider::GetPropertyValue(PROPERTYID propertyId, VARIANT* pRetVal)
{
    // The Name property is typically the same as the Caption property of the 
    // control window, if it has one. Here, the Name is overridden for the 
    // sake of illustration. 
    if (propertyId == UIA_NamePropertyId) 
    {
        pRetVal->vt = VT_BSTR;
        pRetVal->bstrVal = SysAllocString(L"Custom button");
    }
    
    else if (propertyId == UIA_ControlTypePropertyId) 
    {
        pRetVal->vt = VT_I4;
        pRetVal->lVal = UIA_ButtonControlTypeId; 
    }

    else if (propertyId == UIA_IsContentElementPropertyId) 
    {
        pRetVal->vt = VT_BOOL;
        pRetVal->lVal = TRUE; 
    }

    else if (propertyId == UIA_IsControlElementPropertyId) 
    {
        pRetVal->vt = VT_BOOL;
        pRetVal->lVal = TRUE; 
    }

    //
    // Return other properties as appropriate for the control type. 
    //

    else
    {
        pRetVal->vt = VT_EMPTY;
        // UI Automation will attempt to get the property from the  
        // provider for window that hosts the control.
    }
    return S_OK;
}

Концептуальные

Обзор свойств автоматизации пользовательского интерфейса

темы How-To для поставщиков автоматизации пользовательского интерфейса