다음을 통해 공유


UI 자동화 이벤트 개요

참고참고

이 문서는 System.Windows.Automation 네임스페이스에 정의된 관리되는 UI Automation 클래스를 사용하려는 .NET Framework 개발자를 위해 작성되었습니다.UI Automation에 대한 최신 정보는 Windows Automation API: UI Automation을 참조하십시오.

Microsoft UI Automation 이벤트 알림은 화면 판독기 및 화면 돋보기와 같은 보조 기술을 위한 핵심 기능입니다. 이러한 UI 자동화 클라이언트는 UI에서 특정 작업이 수행될 때 UI 자동화 공급자에 의해 발생한 이벤트를 추적하고 해당 정보를 사용하여 최종 사용자에게 알립니다.

공급자 응용 프로그램에서 이러한 이벤트에 가입한 클라이언트가 있는지 여부에 따라 이벤트를 선택적으로 발생시키도록 허용하거나 이벤트를 수신하는 클라이언트가 없는 경우 이벤트를 전혀 발생시키지 않도록 함으로써 효율성이 향상되었습니다.

이 항목에는 다음 단원이 포함되어 있습니다.

  • 이벤트 형식
  • UI 자동화 이벤트 식별자
  • UI 자동화 이벤트 인수
  • 관련 항목

이벤트 형식

UI Automation 이벤트는 다음과 같은 범주로 구분됩니다.

Event

설명

속성 변경

UI Automation 요소나 컨트롤 패턴에서 속성이 변경될 때 발생합니다. 예를 들어 클라이언트에서 응용 프로그램의 확인란 컨트롤을 모니터링해야 한다면 ToggleState 속성에 대한 속성 변경 이벤트를 수신하도록 등록할 수 있습니다. 그러면 확인란 컨트롤이 선택되거나 선택이 취소될 때 공급자가 이벤트를 발생시키고 클라이언트가 이에 대해 작업이 필요한 경우 해당 작업을 수행할 수 있습니다.

요소 동작

단추를 클릭하거나 InvokePattern을 통해 단추를 호출하는 것처럼 최종 사용자 또는 프로그래밍 작업을 통해 UI가 변경될 때 발생합니다.

구조 변경

UI Automation 트리의 구조가 변경될 때 발생합니다. 이 구조는 데스크톱에서 새 UI 항목을 표시하거나, 숨기거나, 제거하면 변경됩니다.

전역 데스크톱 변경

한 요소에서 다른 요소로 포커스가 이동되거나 창이 닫히는 것처럼 클라이언트와 관련된 전역적인 작업이 수행될 때 발생합니다.

일부 이벤트는 UI 상태가 변경되었다는 의미가 아닐 수도 있습니다. 예를 들어 사용자가 Tab 키를 사용하여 텍스트 입력 필드로 이동한 후 해당 필드를 업데이트하는 단추를 클릭한 경우 사용자가 실제로 텍스트를 변경하지 않았음에도 TextChangedEvent가 발생합니다. 따라서 이벤트를 처리할 경우 클라이언트 응용 프로그램에서 작업을 수행하기 전에 실제로 변경이 발생했는지 확인해야 합니다.

다음과 같은 이벤트는 UI 상태가 변경되지 않은 경우에도 발생할 수 있습니다.

  • AutomationPropertyChangedEvent(변경된 속성에 따라 다름)

  • ElementSelectedEvent

  • InvalidatedEvent

  • TextChangedEvent

UI 자동화 이벤트 식별자

Microsoft UI Automation 이벤트는 AutomationEvent 개체로 식별됩니다. Id 속성에는 이벤트 형식을 고유하게 식별하는 값이 포함되어 있습니다.

다음 표에는 Id에 사용할 수 있는 값이 이벤트 인수로 사용되는 형식과 함께 나와 있습니다. 클라이언트와 공급자는 서로 다른 클래스에서 이름이 동일한 필드를 식별자로 사용합니다.

클라이언트 식별자

공급자 식별자

이벤트 인수 형식

AutomationElement.AsyncContentLoadedEvent

AutomationElementIdentifiers.AsyncContentLoadedEvent

AsyncContentLoadedEventArgs

SelectionItemPattern.ElementAddedToSelectionEvent

SelectionItemPattern.ElementRemovedFromSelectionEvent

SelectionItemPattern.ElementSelectedEvent

SelectionPattern.InvalidatedEvent

InvokePattern.InvokedEvent

AutomationElement.LayoutInvalidatedEvent

AutomationElement.MenuClosedEvent

AutomationElement.MenuOpenedEvent

TextPattern.TextChangedEvent

TextPattern.TextSelectionChangedEvent

AutomationElement.ToolTipClosedEvent

AutomationElement.ToolTipOpenedEvent

WindowPattern.WindowOpenedEvent

SelectionItemPatternIdentifiers.ElementAddedToSelectionEvent

SelectionItemPatternIdentifiers.ElementRemovedFromSelectionEvent

SelectionItemPatternIdentifiers.ElementSelectedEvent

SelectionPatternIdentifiers.InvalidatedEvent

InvokePatternIdentifiers.InvokedEvent

AutomationElementIdentifiers.LayoutInvalidatedEvent

AutomationElementIdentifiers.MenuClosedEvent

AutomationElementIdentifiers.MenuOpenedEvent

TextPatternIdentifiers.TextChangedEvent

TextPatternIdentifiers.TextSelectionChangedEvent

AutomationElementIdentifiers.ToolTipClosedEvent

AutomationElementIdentifiers.ToolTipOpenedEvent

WindowPatternIdentifiers.WindowOpenedEvent

AutomationEventArgs

AutomationElement.AutomationFocusChangedEvent

AutomationElementIdentifiers.AutomationFocusChangedEvent

AutomationFocusChangedEventArgs

AutomationElement.AutomationPropertyChangedEvent

AutomationElementIdentifiers.AutomationPropertyChangedEvent

AutomationPropertyChangedEventArgs

AutomationElement.StructureChangedEvent

AutomationElementIdentifiers.StructureChangedEvent

StructureChangedEventArgs

WindowPattern.WindowClosedEvent

WindowPatternIdentifiers.WindowClosedEvent

WindowClosedEventArgs

UI 자동화 이벤트 인수

다음 클래스는 이벤트 인수를 캡슐화합니다.

클래스

설명

AsyncContentLoadedEventArgs

로드 완료 백분율을 비롯한 콘텐츠의 비동기 로드에 대한 정보를 포함합니다.

AutomationEventArgs

추가 데이터가 필요 없는 간단한 이벤트에 대한 정보를 포함합니다.

AutomationFocusChangedEventArgs

한 요소에서 다른 요소로 이동하는 입력 포커스 변경에 대한 정보를 포함합니다. 이 형식의 이벤트는 공급자가 아니라 UI Automation 시스템에 의해 발생합니다.

AutomationPropertyChangedEventArgs

요소 또는 컨트롤 패턴의 속성 값 변경에 대한 정보를 포함합니다.

StructureChangedEventArgs

UI Automation 트리의 변경에 대한 정보를 포함합니다.

WindowClosedEventArgs

창 닫기에 대한 정보를 포함합니다.

모든 이벤트 인수 클래스에는 EventId 멤버가 있습니다. 이 식별자는 AutomationEvent에 캡슐화되어 있습니다.

공급자는 이벤트를 식별하는 데 사용하는 AutomationEvent 개체를 DockPatternIdentifiers 같은 컨트롤 패턴 식별자 클래스와 AutomationElementIdentifiers의 필드에서 가져옵니다. 클라이언트 응용 프로그램은 동일한 필드를 DockPattern 같은 컨트롤 패턴 클래스와 AutomationElement의 필드에서 가져옵니다.

이벤트 식별자 목록은 클라이언트용 UI 자동화 이벤트를 참조하십시오.

참고 항목

작업

UI 자동화 이벤트 구독

개념

클라이언트용 UI 자동화 이벤트

서버측 UI 자동화 공급자 구현