다음을 통해 공유


사용자 지정 속성, 이벤트 및 컨트롤 패턴 디자인

사용자 지정 속성, 이벤트 또는 컨트롤 패턴의 디자인은 다양한 컨트롤 구현에 유용해야 합니다. 제한된 시나리오에서만 유용한 컨트롤 또는 애플리케이션별 디자인은 피해야 합니다. 디자인은 다양한 접근성 및 자동화된 테스트 애플리케이션의 요구 사항을 충족하기 위해 신중하게 지정된 기존 Microsoft UI 자동화 속성, 이벤트 및 제어 패턴의 예를 따라야 합니다.

사용자 지정 속성, 이벤트 또는 제어 패턴에 대한 사양을 구현하려면 클라이언트 및 공급자 측의 당사자의 협력 및 합의가 포함되며 양 당사자가 사양을 일관되게 구현해야 합니다. 회사는 AIA(접근성 상호 운용성 얼라이언스) 와 같은 업계 조직과 협력하여 사용자 지정 속성, 이벤트 또는 제어 패턴에 대한 사양을 디자인하고 게시하는 것이 좋습니다. 이러한 방식으로 합의에 도달할 수 있으며 가장 다양한 애플리케이션과의 상호 운용성을 보장할 수 있습니다.

이 항목에는 다음과 같은 섹션이 포함되어 있습니다.

사용자 지정 속성 및 이벤트를 사용하는 경우

사용자 지정 속성, 이벤트 또는 컨트롤 패턴을 만들기 전에 UI 자동화 기존 솔루션을 제공하지 않는지 확인합니다. 예를 들어 Invoke 컨트롤 패턴이 해당 기능을 이미 설명하므로 사용자 지정 "클릭" 컨트롤 패턴을 만들 필요가 없습니다.

사용자 지정 속성, 이벤트 또는 컨트롤 패턴이 필요하다고 결정한 경우 너무 모호하거나 일반적이지 않은지 확인합니다. 예를 들어 "표시"라는 컨트롤 패턴은 컨트롤의 표시 유형이 요소의 가용성 속성(예: UIA_IsExpandCollapsePatternAvailablePropertyId 또는 UIA_IsScrollItemPatternAvailablePropertyId)으로 표시될 수 있기 때문에 유용하지 않습니다.

사용자 지정 솔루션을 구현하기 전에 필요한지 신중하게 확인한 다음 기능을 완전히 디자인합니다.

사용자 지정 속성 디자인

UI 자동화 자동화 요소 속성과 컨트롤 패턴 속성의 두 가지 기본 형식을 포함합니다. 자동화 요소 속성은 컨트롤 형식에 관계없이 모든 UI 자동화 요소에 의해 노출되는 Name, AcceleratorKey 및 ClassName과 같은 일반적인 속성 집합으로 구성됩니다. 컨트롤 패턴 속성은 특정 컨트롤 패턴을 통해 컨트롤에 의해 노출됩니다. 각 컨트롤 패턴에는 컨트롤이 노출해야 하는 해당 컨트롤 패턴 속성 집합이 있습니다. 예를 들어 Grid 컨트롤 패턴을 지원하는 컨트롤은 ColumnCount 및 RowCount 속성을 노출합니다.

사용자 지정 Automation 요소 속성 또는 컨트롤 패턴 속성은 다음 디자인 지침을 준수해야 합니다.

  • 사용자 지정 속성에는 UIAutomationType 열거형에 지정된 다음 데이터 형식 중 하나가 있어야 합니다. 사용자 지정 속성에 대해 지원되는 다른 데이터 형식은 없습니다.
    • UIAutomationType_Bool
    • UIAutomationType_Double
    • UIAutomationType_Element
    • UIAutomationType_Int
    • UIAutomationType_Point
    • UIAutomationType_String
  • 사용자 지정 속성에 문자열 데이터(BSTR)가 포함된 경우 사양은 속성이 지역화 가능한지(즉, 문자열을 다른 UI 언어로 변환할 수 있는지 여부)를 명시해야 합니다.
  • 사용자 지정 속성은 기존 속성의 기능이나 기능과 겹치지 않아야 합니다.

사용자 지정 이벤트 디자인

애플리케이션은 UI 자동화 이벤트 알림을 사용하여 UI 항목과 관련된 변경 내용 및 작업에 응답합니다. 대부분의 속성에는 속성 값이 변경될 때 발생하는 UI 자동화 속성 변경 이벤트가 있습니다. 사용자 지정 속성을 도입하는 경우 필요할 수도 있는 해당 사용자 지정 이벤트를 도입하는 것이 좋습니다.

사용자 지정 이벤트는 다음 디자인 지침을 준수해야 합니다.

  • 사용자 지정 이벤트는 "상태 비정상"이어야 합니다. 특정 속성 또는 값과 연결할 수 없습니다.
  • 사용자 지정 이벤트는 기존 이벤트의 정의 또는 역할과 겹치지 않아야 합니다.

사용자 지정 UI 자동화 이벤트 및 WinEvents

WinEvents 는 Microsoft Windows 플랫폼의 유용한 프로세스 간 통신 및 이벤트 메커니즘입니다. 그러나 새 WinEvent ID를 도입하면 다른 애플리케이션 또는 운영 체제와 충돌하여 시스템이 불안정해질 수 있으므로 위험합니다. 충돌을 방지하기 위해 Microsoft는 여러 범주의 WinEvents를 정의했으며 각 범주에 대해 WinEvent ID로 사용할 값 범위를 하나 이상 정의했습니다. 자세한 내용은 WinEvent ID 할당을 참조하세요.

사용자 지정 UI 자동화 이벤트는 UI 자동화 프레임워크에서 내부적으로 이벤트 ID를 할당하여 충돌을 방지합니다.

사용자 지정 컨트롤 패턴 디자인

컨트롤 패턴은 자동화 요소에서 사용할 수 있는 개별 기능을 정의하는 속성, 메서드 및 이벤트가 있는 인터페이스입니다. 컨트롤 패턴 메서드를 사용하면 UI 자동화 클라이언트가 컨트롤의 특정 측면을 조작할 수 있습니다. 컨트롤 패턴 속성 및 이벤트는 컨트롤의 일부 측면에 대한 정보를 제공하고 컨트롤 패턴을 구현하는 자동화 요소의 상태에 대한 정보를 제공합니다.

사용자 지정 컨트롤 패턴은 다음 디자인 지침을 준수해야 합니다.

  • 사용자 지정 컨트롤 패턴은 특정 시나리오를 포함해야 합니다. 예를 들어 ItemContainer 컨트롤 패턴은 가상화 상태에 관계없이 포함된 개체를 쿼리하기 위한 것이지만 포함된 개체를 열거하거나 계산하지는 않습니다.
  • 사용자 지정 컨트롤 패턴은 기존 컨트롤 패턴의 기능과 겹치지 않아야 합니다. 예를 들어 InvokeExpandCollapse 컨트롤 패턴을 결합하여 새 컨트롤 패턴으로 표시해서는 안 됩니다. 기존 컨트롤 패턴을 다시 사용하거나 새 컨트롤 패턴을 사용하여 고유한 시나리오를 정의합니다.
  • 여러 사용자 지정 컨트롤 패턴을 함께 설계하여 복잡한 시나리오를 지원할 수 있습니다. 예를 들어 Selection 및 SelectionItem 컨트롤 패턴은 함께 작동하여 일반적인 개체 선택 시나리오를 지원합니다.

사용자 지정 컨트롤 형식

이 항목에서는 사용자 지정 UI 자동화 속성, 이벤트 및 컨트롤 패턴을 등록하는 방법에 중점을 두지만 새 컨트롤 형식을 도입할 수도 있습니다. 사용자 지정 속성, 이벤트 및 컨트롤 패턴과 달리 사용자 지정 컨트롤 형식은 실제로 UI 자동화 ControlType 속성의 잠재적 값일 뿐이므로 런타임에 프로그래밍 방식으로 등록할 수 없습니다. 그러나 다른 클라이언트 및 공급자가 사용할 수 있도록 사용자 지정 컨트롤 형식 ID를 정의, 게시 및 사용할 수 있습니다. 컨트롤 형식에 대한 자세한 내용은 UI 자동화 컨트롤 형식 개요를 참조하세요.

개념

사용자 지정 속성, 이벤트 및 컨트롤 패턴 등록

UI 자동화 속성 개요

UI 자동화 이벤트 개요

UI 자동화 컨트롤 패턴 개요