비고
이 설명서는 System.Windows.Automation 네임스페이스에 정의된 관리되는 UI 자동화 클래스를 사용하려는 .NET Framework 개발자를 위한 것입니다. UI 자동화에 대한 최신 정보는 Windows Automation API: UI 자동화참조하세요.
이 항목에서는 UI 자동화 클라이언트에서 Microsoft UI Automation 이벤트를 사용하는 방법을 설명합니다.
UI 자동화를 사용하면 클라이언트가 관심 있는 이벤트를 구독할 수 있습니다. 이 기능은 시스템의 모든 UI 요소를 지속적으로 폴링하여 정보, 구조 또는 상태가 변경되었는지 확인할 필요가 없도록 하여 성능을 향상시킵니다.
정의된 범위 내에서만 이벤트를 수신 대기하는 기능으로 효율성도 향상됩니다. 예를 들어 클라이언트는 트리의 모든 UI 자동화 요소 또는 하나의 요소와 해당 하위 요소에 대한 포커스 변경 이벤트를 수신 대기할 수 있습니다.
비고
가능한 모든 이벤트가 Microsoft UI 자동화 공급자에 의해 발생한다고 가정하지 마세요. 예를 들어 모든 속성 변경으로 인해 Windows Forms 및 Win32 컨트롤에 대한 표준 프록시 공급자가 이벤트를 발생시키는 것은 아닙니다.
UI 자동화 이벤트에 대한 광범위한 보기는 UI 자동화 이벤트 개요참조하세요.
이벤트 구독
클라이언트 애플리케이션은 다음 방법 중 하나를 사용하여 이벤트 처리기를 등록하여 특정 종류의 이벤트를 구독합니다.
메서드를 호출하기 전에 이벤트를 처리할 대리자 메서드를 만들어야 합니다. 원하는 경우 단일 메서드에서 다양한 종류의 이벤트를 처리하고 이 메서드를 테이블의 메서드 중 하나에 여러 번 호출하여 전달할 수 있습니다. 예를 들어, 단일 AutomationEventHandler를 EventId에 따라 다양한 이벤트를 다르게 처리하도록 설정할 수 있습니다.
비고
창이 닫힌 이벤트를 처리하려면 이벤트 처리기에 전달되는 인수 형식을 .로 WindowClosedEventArgs캐스팅합니다. 창에 대한 Microsoft UI 자동화 요소가 더 이상 유효하지 않으므로 매개 변수를 sender
사용하여 정보를 검색할 수 없습니다. 대신 사용합니다 GetRuntimeId .
주의
애플리케이션이 자체 UI에서 이벤트를 수신할 수 있는 경우 애플리케이션의 UI 스레드를 사용하여 이벤트를 구독하거나 구독을 취소하지 마세요. 이렇게 하면 예측할 수 없는 동작이 발생할 수 있습니다. 자세한 내용은 UI 자동화 스레딩 문제를 참조하세요.
종료 시 또는 UI 자동화 이벤트가 애플리케이션에 더 이상 관심이 없는 경우 UI 자동화 클라이언트는 다음 방법 중 하나를 호출해야 합니다.
메서드 | 설명 |
---|---|
RemoveAutomationEventHandler | AddAutomationEventHandler를 사용하여 등록된 이벤트 처리기의 등록이 취소됩니다. |
RemoveAutomationFocusChangedEventHandler | AddAutomationFocusChangedEventHandler를 사용하여 등록된 이벤트 처리기의 등록이 취소됩니다. |
RemoveAutomationPropertyChangedEventHandler | AddAutomationPropertyChangedEventHandler를 사용하여 등록된 이벤트 처리기의 등록이 취소됩니다. |
RemoveAllEventHandlers | 등록된 모든 이벤트 처리기를 등록 취소합니다. |
예제 코드는 UI 자동화 이벤트 구독을 참조하세요.