클라이언트에 대한 UI 자동화 이벤트

참고 항목

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

이 항목에서는 UI 자동화 클라이언트에서 Microsoft UI 자동화 이벤트를 사용하는 방법을 설명합니다.

UI 자동화를 통해 클라이언트가 원하는 이벤트를 구독할 수 있습니다. 이 기능은 정보, 구조 또는 상태가 변경되었는지 확인하기 위해 시스템의 모든 UI 요소를 지속적으로 폴링하지 않고도 성능을 향상시킵니다.

정의된 기능 내에서만 이벤트를 수신 대기하는 기능을 통해 효율성도 향상되었습니다. 예를 들어, 클라이언트는 트리의 모든 UI 자동화 요소에서 포커스 변경 이벤트를 수신 대기하거나, 하나의 요소와 해당 하위 항목만 수신 대기할 수 있습니다.

참고 항목

가능한 모든 이벤트가 Microsoft UI 자동화 공급자에서 발생되지는 않습니다. 예를 들어, 일부 속성의 경우 변경된 사항이 있더라도 표준 프록시 공급자가 Windows Forms 및 Win32 컨트롤에 대한 이벤트를 발생시키지 않습니다.

UI 자동화 이벤트에 대한 자세한 내용은 UI 자동화 이벤트 개요를 참조하세요.

이벤트 구독

클라이언트 애플리케이션은 다음 방법 중 하나로 이벤트 처리기를 등록하여 특정 종류의 이벤트를 구독합니다.

메서드 이벤트 유형 이벤트 인수 형식 대리자 형식
AddAutomationFocusChangedEventHandler 포커스 변경 AutomationFocusChangedEventArgs AutomationFocusChangedEventHandler
AddAutomationPropertyChangedEventHandler 속성 변경 AutomationPropertyChangedEventArgs AutomationPropertyChangedEventHandler
AddStructureChangedEventHandler 구조 변경 StructureChangedEventArgs StructureChangedEventHandler
AddAutomationEventHandler AutomationEvent로 식별된 기타 모든 이벤트 AutomationEventArgs 또는 WindowClosedEventArgs AutomationEventHandler

메서드를 호출하기 전에, 이벤트를 처리하는 대리자 메서드를 만들어야 합니다. 원하는 경우, 단일 메서드에서 여러 종류의 이벤트를 처리하고 이 메서드를 여러 번 호출하여 테이블에 있는 메서드 중 하나에 전달할 수 있습니다. 예를 들어, 다양한 이벤트를 EventId에 따라 다르게 처리하도록 단일 AutomationEventHandler를 설정할 수 있습니다.

참고 항목

창이 닫힌 이벤트를 처리하려면 WindowClosedEventArgs로 이벤트 처리기에 전달되는 인수 형식을 캐스팅합니다. 창의 Microsoft UI 자동화 요소가 더 이상 유효하지 않기 때문에 sender 매개 변수를 사용하여 검색을 검색할 수 없습니다. 대신 GetRuntimeId를 사용해야 합니다.

주의

애플리케이션이 자체 UI에서 이벤트를 검색하려는 경우에는 애플리케이션의 UI 스레드를 사용하여 이벤트를 구독하거나 구독을 취소하지 않아야 합니다. 이렇게 하면 예기치 않은 동작이 발생할 수 있습니다. 자세한 내용은 UI Automation Threading Issues을 참조하세요.

종료되거나 UI 자동화 이벤트가 더 이상 애플리케이션에 필요하지 않는 경우에는 UI 자동화 클라이언트가 다음 메서드 중 하나를 호출해야 합니다.

메서드 설명
RemoveAutomationEventHandler AddAutomationEventHandler를 사용하여 등록된 이벤트 처리기의 등록을 취소합니다.
RemoveAutomationFocusChangedEventHandler AddAutomationFocusChangedEventHandler를 사용하여 등록된 이벤트 처리기의 등록을 취소합니다.
RemoveAutomationPropertyChangedEventHandler AddAutomationPropertyChangedEventHandler를 사용하여 등록된 이벤트 처리기의 등록을 취소합니다.
RemoveAllEventHandlers 등록된 모든 이벤트 처리기를 등록 취소합니다.

예제 코드는 UI 자동화 이벤트 구독을 참조하세요.

참고 항목