Nota
El acceso a esta página requiere autorización. Puede intentar iniciar sesión o cambiar directorios.
El acceso a esta página requiere autorización. Puede intentar cambiar los directorios.
Nota:
Esta documentación está pensada para desarrolladores de .NET Framework que desean usar las clases de automatización de la interfaz de usuario administradas definidas en el espacio de nombres System.Windows.Automation. Para obtener la información más reciente sobre la automatización de la interfaz de usuario, consulte API de Windows Automation: Automatización de la interfaz de usuario.
En esta introducción se presentan las propiedades de automatización de la interfaz de usuario a medida que se exponen a las aplicaciones cliente de Automatización de la interfaz de usuario.
Las propiedades de AutomationElement los objetos contienen información sobre los elementos de la interfaz de usuario (UI), normalmente controles. Las propiedades de un AutomationElement son genéricas; es decir, no son específicas de ningún tipo de control. Muchas de estas propiedades se exponen en la AutomationElement.AutomationElementInformation estructura.
Los patrones de control también tienen propiedades. Las propiedades de los patrones de control son específicas del patrón. Por ejemplo, ScrollPattern tiene propiedades que permiten a una aplicación cliente detectar si una ventana se puede desplazar vertical o horizontalmente y cuáles son los tamaños de vista actuales y las posiciones de desplazamiento. Los patrones de control exponen todas sus propiedades a través de una estructura; por ejemplo, ScrollPattern.ScrollPatternInformation.
Las propiedades de automatización de la interfaz de usuario son de solo lectura. Para establecer las propiedades de un control, debe usar los métodos del patrón de control adecuado. Por ejemplo, use Scroll para cambiar los valores de posición de una ventana de desplazamiento.
Para mejorar el rendimiento, los valores de propiedad de los controles y los patrones de control se pueden almacenar en caché cuando AutomationElement se recuperan objetos. Para obtener más información, consulte Almacenamiento en caché en los clientes de automatización de la interfaz de usuario.
Identificadores de propiedad
Los identificadores de propiedad (ID) son valores únicos y constantes que se encapsulan en AutomationProperty objetos. Las aplicaciones cliente de automatización de la interfaz de usuario obtienen estos identificadores de la AutomationElement clase o de la clase de patrón de control adecuada, como ScrollPattern. Los proveedores de automatización de la interfaz de usuario los obtienen de AutomationElementIdentifiers o de una de las clases de identificadores de patrón de control, como ScrollPatternIdentifiers.
El valor numérico Id de un AutomationProperty es usado por los proveedores para identificar las propiedades que se están consultando en el método IRawElementProviderSimple.GetPropertyValue. En general, las aplicaciones cliente no necesitan examinar el Id. El ProgrammaticName solo se usa para fines de depuración y diagnóstico.
Condiciones de propiedad
Los identificadores de propiedad se utilizan para construir objetos PropertyCondition, que a su vez se usan para encontrar objetos AutomationElement. Por ejemplo, es posible que desee buscar un AutomationElement que tenga un nombre determinado o todos los controles que están habilitados. Cada PropertyCondition especifica un AutomationProperty identificador y el valor con el que la propiedad debe coincidir.
Para obtener más información, consulte los siguientes temas de referencia:
Recuperación de propiedades
Algunas propiedades de AutomationElement y todas las propiedades de una clase de patrón de control se exponen como propiedades anidadas de la propiedad Current
o Cached
del objeto AutomationElement o del patrón de control.
Además, cualquier propiedad de un patrón de control, incluida una propiedad que no esté disponible en las estructuras AutomationElement o Cached, se puede recuperar mediante uno de los siguientes métodos:
Estos métodos ofrecen un rendimiento ligeramente mejor, así como acceso a toda la gama de propiedades.
En el ejemplo de código siguiente se muestran las dos maneras de recuperar una propiedad en un AutomationElement.
// 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 las propiedades de los patrones de control admitidos por AutomationElement, no es necesario recuperar el objeto de patrón de control. Simplemente pase uno de los identificadores de propiedades de patrón al método.
En el ejemplo de código siguiente se muestran las dos maneras de recuperar una propiedad en un patrón de control.
// 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))
Los Get
métodos devuelven un Object. La aplicación debe convertir el objeto devuelto al tipo adecuado antes de usar el valor .
Valores de propiedad predeterminados
Si un proveedor de automatización de la interfaz de usuario no implementa una propiedad, el sistema de automatización de la interfaz de usuario puede proporcionar un valor predeterminado. Por ejemplo, si el proveedor de un control no admite la propiedad identificada por HelpTextProperty, UI Automation devuelve una cadena vacía. Del mismo modo, si el proveedor no admite la propiedad identificada por IsDockPatternAvailableProperty, UI Automation devuelve false
.
Puede cambiar este comportamiento mediante las sobrecargas del método AutomationElement.GetCachedPropertyValue y AutomationElement.GetCurrentPropertyValue. Cuando se especifica true
como segundo parámetro, ui Automation no devuelve un valor predeterminado, sino que devuelve el valor NotSupportedespecial .
En el código de ejemplo siguiente se intenta recuperar una propiedad de un elemento y, si no se admite la propiedad, se usa en su lugar un valor definido por la aplicación.
// 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 detectar qué propiedades admite un elemento, use GetSupportedProperties. Esto devuelve una matriz de AutomationProperty identificadores.
Eventos de cambio de propiedades
Cuando cambia un valor de propiedad en un AutomationElement o patrón de control, se genera un evento. Una aplicación puede suscribirse a estos eventos llamando a AddAutomationPropertyChangedEventHandler, proporcionando una matriz de AutomationProperty identificadores como último parámetro para especificar las propiedades de interés.
En el elemento AutomationPropertyChangedEventHandler, puede identificar la propiedad que ha cambiado si comprueba el miembro Property de los argumentos del evento. Los argumentos también contienen los valores antiguos y nuevos de la propiedad de Automatización de la Interfaz de Usuario que ha cambiado. Estos valores son de tipo Object y deben convertirse al tipo correcto antes de usarse.
Propiedades de AutomationElement adicionales
Además de las estructuras de propiedades Current y Cached, el AutomationElement tiene las siguientes propiedades, que se recuperan a través de accesores de propiedades simples.
Propiedad | Descripción |
---|---|
CachedChildren | Colección de objetos secundarios AutomationElement que se encuentran en la memoria caché. |
CachedParent | Objeto AutomationElement primario que se encuentra en la memoria caché. |
FocusedElement | (Propiedad estática) El elemento AutomationElement que tiene el foco de entrada. |
RootElement | (Propiedad estática) El elemento AutomationElementraíz. |