Partilhar via


Propriedades de automação da interface do usuário para clientes

Nota

Esta documentação destina-se a desenvolvedores do .NET Framework que desejam usar as classes de automação da interface do usuário gerenciadas definidas no System.Windows.Automation namespace. Para obter as informações mais recentes sobre a automação da interface do usuário, consulte API de automação do Windows: automação da interface do usuário.

Esta visão geral apresenta as propriedades da Automação da Interface do Usuário à medida que elas são expostas aos aplicativos cliente da Automação da Interface do Usuário.

As propriedades em AutomationElement objetos contêm informações sobre elementos da interface do usuário (UI), geralmente controles. As propriedades de um AutomationElement são genéricas, ou seja, não específicas de um tipo de controle. Muitas dessas propriedades estão expostas na AutomationElement.AutomationElementInformation estrutura.

Os padrões de controle também têm propriedades. As propriedades dos padrões de controle são específicas para o padrão. Por exemplo, ScrollPattern tem propriedades que permitem que um aplicativo cliente descubra se uma janela pode ser rolada vertical ou horizontalmente e quais são os tamanhos de exibição e as posições de rolagem atuais. Os padrões de controlo expõem todas as suas propriedades através de uma estrutura; por exemplo, ScrollPattern.ScrollPatternInformation.

As propriedades de Automação da Interface do Usuário são somente leitura. Para definir propriedades de um controle, você deve usar os métodos do padrão de controle apropriado. Por exemplo, use Scroll para alterar os valores de posição de uma janela de rolagem.

Para melhorar o desempenho, os valores de propriedade de controles e padrões de controle podem ser armazenados em cache quando AutomationElement os objetos são recuperados. Para obter mais informações, consulte Caching in UI Automation Clients.

IDs de propriedade

Os identificadores de propriedade (IDs) são valores constantes exclusivos que são encapsulados em AutomationProperty objetos. Os aplicativos cliente de automação da interface do usuário obtêm essas IDs da AutomationElement classe ou da classe de padrão de controle apropriada, como ScrollPattern. Os provedores de automação da interface do usuário obtêm-nos de AutomationElementIdentifiers ou de uma das classes de identificadores de padrão de controle, como ScrollPatternIdentifiers.

O numérico Id de um AutomationProperty é usado por provedores para identificar propriedades que estão sendo consultadas IRawElementProviderSimple.GetPropertyValue no método. Em geral, os aplicativos cliente não precisam examinar o Id. O ProgrammaticName é usado apenas para fins de depuração e diagnóstico.

Condições do Imóvel

Os IDs de propriedade são usados na construção de PropertyCondition objetos usados para localizar AutomationElement objetos. Por exemplo, você pode querer encontrar um AutomationElement que tenha um determinado nome ou todos os controles que estão habilitados. Cada PropertyCondition um especifica um AutomationProperty identificador e o valor que a propriedade deve corresponder.

Para obter mais informações, consulte os seguintes tópicos de referência:

Recuperando propriedades

Algumas propriedades de AutomationElement e todas as propriedades de uma classe de padrão de controle são expostas como propriedades aninhadas da Current propriedade ou Cached do objeto de padrão de AutomationElement controle.

Além disso, qualquer AutomationElement propriedade ou padrão de controle, incluindo uma propriedade que não está disponível na Cached estrutura ou Current , pode ser recuperada usando um dos seguintes métodos:

Estes métodos oferecem um desempenho ligeiramente melhor, bem como acesso a toda a gama de propriedades.

O exemplo de código a seguir mostra as duas maneiras de recuperar uma propriedade em um AutomationElementarquivo .

// elementList is an AutomationElement.

// The following two calls are equivalent.
string name = elementList.Current.Name;
name = elementList.GetCurrentPropertyValue(AutomationElement.NameProperty) as string;
' elementList is an AutomationElement.
' The following two calls are equivalent.
Dim name As String = elementList.Current.Name
name = CStr(elementList.GetCurrentPropertyValue(AutomationElement.NameProperty))

Para recuperar propriedades de padrões de controle suportados AutomationElementpelo , não é necessário recuperar o objeto de padrão de controle. Basta passar um dos identificadores de propriedade pattern para o método.

O exemplo de código a seguir mostra as duas maneiras de recuperar uma propriedade em um padrão de controle.

// elementList is an AutomationElement representing a list box.
// Error-checking is omitted. Assume that elementList is known to support SelectionPattern.

SelectionPattern selectPattern =
    elementList.GetCurrentPattern(SelectionPattern.Pattern) as SelectionPattern;
bool isMultipleSelect = selectPattern.Current.CanSelectMultiple;

// The following call is equivalent to the one above.
isMultipleSelect = (bool)
    elementList.GetCurrentPropertyValue(SelectionPattern.CanSelectMultipleProperty);
' elementList is an AutomationElement representing a list box.
' Error-checking is omitted. Assume that elementList is known to support SelectionPattern.
Dim selectPattern As SelectionPattern = _
    DirectCast(elementList.GetCurrentPattern(SelectionPattern.Pattern), SelectionPattern)
Dim isMultipleSelect As Boolean = selectPattern.Current.CanSelectMultiple

' The following call is equivalent to the one above.
isMultipleSelect = CBool(elementList.GetCurrentPropertyValue(SelectionPattern.CanSelectMultipleProperty))

Os Get métodos retornam um Objectarquivo . O aplicativo deve converter o objeto retornado para o tipo adequado antes de usar o valor.

Valores de propriedade padrão

Se um provedor de Automação da Interface do Usuário não implementar uma propriedade, o sistema de Automação da Interface do Usuário poderá fornecer um valor padrão. Por exemplo, se o provedor de um controle não oferecer suporte à propriedade identificada pelo HelpTextProperty, a Automação da Interface do Usuário retornará uma cadeia de caracteres vazia. Da mesma forma, se o provedor não oferecer suporte à propriedade identificada pelo IsDockPatternAvailableProperty, a Automação da Interface do Usuário retornará false.

Você pode alterar esse comportamento usando as sobrecargas de AutomationElement.GetCachedPropertyValue método e AutomationElement.GetCurrentPropertyValue . Quando você especifica true como o segundo parâmetro, a Automação da Interface do Usuário não retorna um valor padrão, mas retorna o valor NotSupportedespecial.

O código de exemplo a seguir tenta recuperar uma propriedade de um elemento e, se a propriedade não for suportada, um valor definido pelo aplicativo será usado.

// elementList is an AutomationElement.
object help = elementList.GetCurrentPropertyValue(AutomationElement.HelpTextProperty, true);
if (help == AutomationElement.NotSupported)
{
    help = "No help available";
}
string helpText = (string)help;
' elementList is an AutomationElement.
Dim help As Object = elementList.GetCurrentPropertyValue(AutomationElement.HelpTextProperty, True)
If help Is AutomationElement.NotSupported Then
    help = "No help available"
End If
Dim helpText As String = CStr(help)

Para descobrir quais propriedades são suportadas por um elemento, use GetSupportedProperties. Isso retorna uma matriz de AutomationProperty identificadores.

Eventos alterados de propriedade

Quando um valor de propriedade em um AutomationElement padrão ou controle muda, um evento é gerado. Um aplicativo pode se inscrever nesses eventos chamando AddAutomationPropertyChangedEventHandler, fornecendo uma matriz de AutomationProperty identificadores como o último parâmetro para especificar as propriedades de interesse.

AutomationPropertyChangedEventHandlerNo , você pode identificar a propriedade que foi alterada verificando o Property membro dos argumentos do evento. Os argumentos também contêm os valores antigos e novos da propriedade Automação da Interface do Usuário que foi alterada. Esses valores são do tipo Object e devem ser convertidos para o tipo correto antes de serem usados.

Propriedades adicionais de AutomationElement

Além das Current estruturas e Cached propriedade, AutomationElement tem as seguintes propriedades, que são recuperadas através de acessos de propriedade simples.

Property Description
CachedChildren Uma coleção de objetos filho AutomationElement que estão no cache.
CachedParent Um AutomationElement objeto pai que está no cache.
FocusedElement (Propriedade estática) O AutomationElement que tem o foco de entrada.
RootElement (Propriedade estática) A raiz AutomationElement.

Consulte também