Return Properties from a UI Automation Provider

This topic contains sample code that shows how a UI Automation provider can return properties of an element to client applications.

For any property it does not explicitly support, the provider must return null (Nothing in Visual Basic). This ensures that UI Automation attempts to obtain the property from another source, such as the host window provider.

Example

''' <summary> 
''' Gets provider property values. 
''' </summary> 
''' <param name="propId">Property identifier.</param> 
''' <returns>The value of the property.</returns> 
Function GetPropertyValue(ByVal propId As Integer) As Object _
    Implements IRawElementProviderSimple.GetPropertyValue

    If propId = AutomationElementIdentifiers.NameProperty.Id Then 
        Return "Custom list control" 
    ElseIf propId = AutomationElementIdentifiers.ControlTypeProperty.Id Then 
        Return ControlType.List.Id
    ElseIf propId = AutomationElementIdentifiers.IsContentElementProperty.Id Then 
        Return True 
    ElseIf propId = AutomationElementIdentifiers.IsControlElementProperty.Id Then 
        Return True 
    Else 
        Return Nothing 
    End If 
End Function 'IRawElementProviderSimple.GetPropertyValue
/// <summary> 
/// Gets provider property values. 
/// </summary> 
/// <param name="propId">Property identifier.</param>
/// <returns>The value of the property.</returns> 
object IRawElementProviderSimple.GetPropertyValue(int propId)
{
    if (propId == AutomationElementIdentifiers.NameProperty.Id)
    {
        return "Custom list control";
    }
    else if (propId == AutomationElementIdentifiers.ControlTypeProperty.Id)
    {
        return ControlType.List.Id;  
    }
    else if (propId == AutomationElementIdentifiers.IsContentElementProperty.Id)
    {
        return true;
    }
    else if (propId == AutomationElementIdentifiers.IsControlElementProperty.Id)
    {
        return true;
    }
    else
    {
        return null;
    }
}

See Also

Concepts

UI Automation Providers Overview

Server-Side UI Automation Provider Implementation