다음을 통해 공유


클라이언트용 UI 자동화 속성

비고

이 설명서는 System.Windows.Automation 네임스페이스에 정의된 관리되는 UI 자동화 클래스를 사용하려는 .NET Framework 개발자를 위한 것입니다. UI 자동화에 대한 최신 정보는 Windows Automation API: UI 자동화참조하세요.

이 개요에서는 UI 자동화 클라이언트 애플리케이션에 노출되는 UI 자동화 속성을 소개합니다.

개체의 AutomationElement 속성에는 일반적으로 컨트롤인 UI(사용자 인터페이스) 요소에 대한 정보가 포함됩니다. 속성 AutomationElement 은 제네릭입니다. 즉, 컨트롤 형식과 관련이 없습니다. 많은 이러한 속성이 AutomationElement.AutomationElementInformation 구조에 노출됩니다.

컨트롤 패턴에도 속성이 있습니다. 컨트롤 패턴의 속성은 패턴에 따라 다릅니다. 예를 들어 ScrollPattern 클라이언트 애플리케이션이 창을 세로 또는 가로로 스크롤할 수 있는지 여부와 현재 보기 크기 및 스크롤 위치를 검색할 수 있는 속성이 있습니다. 컨트롤 패턴은 구조를 통해 모든 속성을 노출합니다. 예를 들면 다음과 같습니다 ScrollPattern.ScrollPatternInformation.

UI 자동화 속성은 읽기 전용입니다. 컨트롤의 속성을 설정하려면 적절한 컨트롤 패턴의 메서드를 사용해야 합니다. 예를 들어 스크롤 창의 위치 값을 변경하는 데 사용합니다 Scroll .

성능을 향상시키기 위해 개체를 검색할 때 AutomationElement 컨트롤 및 컨트롤 패턴의 속성 값을 캐시할 수 있습니다. 자세한 내용은 UI 자동화 클라이언트의 캐싱을 참조하세요.

속성 ID

ID(속성 식별자)는 개체에 AutomationProperty 캡슐화된 고유한 상수 값입니다. UI 자동화 클라이언트 애플리케이션은 AutomationElement 클래스나 ScrollPattern와 같은 적절한 컨트롤 패턴 클래스에서 이러한 ID를 가져옵니다. UI 자동화 공급자는 AutomationElementIdentifiers 또는 ScrollPatternIdentifiers와 같은 컨트롤 패턴 식별자 클래스에서 가져옵니다.

Id 숫자는 AutomationProperty 메서드에서 쿼리되는 IRawElementProviderSimple.GetPropertyValue 속성을 식별하기 위해 공급자에 의해 사용됩니다. 일반적으로 클라이언트 애플리케이션은 Id을 검사할 필요가 없습니다. ProgrammaticName은 디버깅 및 진단 용도로만 사용됩니다.

속성 조건

속성 ID는 PropertyCondition 개체를 찾는 데 사용되는 AutomationElement 개체를 구성하는 데 사용됩니다. 예를 들어, 특정 이름을 가진 AutomationElement를 찾거나 사용 설정된 모든 컨트롤을 찾고 싶을 수 있습니다. 각각 PropertyCondition 은 속성이 AutomationProperty 일치해야 하는 식별자 및 값을 지정합니다.

자세한 내용은 다음 참조 항목을 참조하세요.

속성 검색

AutomationElement의 일부 속성과 컨트롤 패턴 클래스의 모든 속성은 Current 또는 컨트롤 패턴 개체의 Cached 또는 AutomationElement 속성의 중첩 속성으로 노출됩니다.

또한 다음 방법 중 하나를 사용하여 AutomationElement 또는 Cached 구조체에서 사용할 수 없는 속성을 비롯한 모든 Current 또는 컨트롤 패턴 속성을 검색할 수 있습니다.

이러한 메서드는 전체 속성 범위에 대한 액세스뿐만 아니라 약간 더 나은 성능을 제공합니다.

다음 코드 예제에서는 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))

지원되는 AutomationElement컨트롤 패턴의 속성을 검색하려면 컨트롤 패턴 개체를 검색할 필요가 없습니다. 패턴 속성 식별자 중 하나를 메서드에 전달하기만 하면됩니다.

다음 코드 예제에서는 컨트롤 패턴에서 속성을 검색하는 두 가지 방법을 보여 줍니다.

// 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))

메서드는 Get를 반환합니다 Object. 애플리케이션은 값을 사용하기 전에 반환된 개체를 적절한 형식으로 캐스팅해야 합니다.

기본 속성 값

UI 자동화 공급자가 속성을 구현하지 않으면 UI 자동화 시스템에서 기본값을 제공할 수 있습니다. 예를 들어 컨트롤 공급자가 식별된 HelpTextProperty속성을 지원하지 않는 경우 UI 자동화는 빈 문자열을 반환합니다. 마찬가지로 공급자가 IsDockPatternAvailableProperty로 식별된 속성을 지원하지 않으면 UI 자동화는 false을 반환합니다.

AutomationElement.GetCachedPropertyValueAutomationElement.GetCurrentPropertyValue 메서드 오버로드를 사용하여 이 동작을 변경할 수 있습니다. 두 번째 매개 변수로 지정 true 하면 UI 자동화는 기본값을 반환하지 않고 대신 특수 값을 NotSupported반환합니다.

다음 예제 코드는 요소에서 속성을 검색하려고 시도하고 속성이 지원되지 않는 경우 애플리케이션 정의 값이 대신 사용됩니다.

// 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)

요소에서 지원하는 속성을 검색하려면 .를 사용합니다 GetSupportedProperties. 그러면 식별자 배열이 AutomationProperty 반환됩니다.

속성 변경 이벤트

또는 컨트롤 패턴의 AutomationElement 속성 값이 변경되면 이벤트가 발생합니다. 애플리케이션은 관심 있는 속성을 지정하기 위해 식별자 배열 AddAutomationPropertyChangedEventHandler 을 마지막 매개 변수로 제공하여 호출AutomationProperty하여 이러한 이벤트를 구독할 수 있습니다.

AutomationPropertyChangedEventHandler에서 이벤트 인수의 멤버를 확인하여 Property 변경된 속성을 식별할 수 있습니다. 인수에는 변경된 UI 자동화 속성의 이전 값과 새 값도 포함됩니다. 이러한 값은 형식 Object 이며 사용되기 전에 올바른 형식으로 캐스팅해야 합니다.

추가 AutomationElement 속성

뿐만 아니라 CurrentCached 속성 구조 외에도, AutomationElement에는 간단한 속성 접근자를 통해 검색되는 다음과 같은 속성이 있습니다.

재산 설명
CachedChildren 캐시에 있는 자식 AutomationElement 개체의 컬렉션입니다.
CachedParent AutomationElement 캐시에 있는 부모 개체입니다.
FocusedElement (정적 속성) 입력 포커스를 가진 AutomationElement입니다.
RootElement (정적 속성) 루트 AutomationElement입니다.

참고하십시오