다음을 통해 공유


UI 자동화 이벤트 구독

Microsoft UI 자동화 클라이언트에서 관심 있는 이벤트를 구독할 수 있습니다. 이 기능은 시스템의 UI 요소를 지속적으로 폴링하여 정보, 구조 또는 상태가 변경되었는지 확인할 필요가 없도록 하여 성능을 향상시킵니다.

정의된 기능 내에서만 이벤트를 수신 대기하는 기능을 통해 효율성도 향상되었습니다. 예를 들어 클라이언트는 목록의 항목, 목록 자체 또는 전체 대화 상자에서 선택 변경 내용을 수신 대기할 수 있습니다.

참고

가능한 모든 이벤트가 UI 자동화 공급자에 의해 발생한다고 가정하지 마세요. 예를 들어 모든 속성 변경으로 인해 Windows Forms 및 Microsoft Win32 컨트롤에 대한 표준 프록시 공급자가 이벤트를 발생시키는 것은 아닙니다.

 

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

참고

이벤트 처리기를 구현하기 전에 스레딩 문제 이해에 설명된 스레딩 문제에 대해 잘 알고 있어야 합니다.

 

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

이벤트 처리기 등록

클라이언트 애플리케이션은 다음 IUIAutomation 메서드 중 하나를 사용하여 이벤트 처리기를 등록하여 특정 종류의 이벤트를 구독합니다.

구독 방법 이벤트 유형 콜백 인터페이스
AddFocusChangedEventHandler 포커스 변경 IUIAutomationFocusChangedEventHandler
AddPropertyChangedEventHandler, AddPropertyChangedEventHandlerNativeArray 속성 변경 IUIAutomationPropertyChangedEventHandler
AddStructureChangedEventHandler 구조 변경 IUIAutomationStructureChangedEventHandler
AddNotificationEventHandler 알림 IUIAutomationNotificationEventHandler
AddAutomationEventHandler 기타 이벤트 IUIAutomationEventHandler

 

클라이언트가 모든 하위 항목(TreeScope_Descendants)에 대한 이벤트 처리기를 추가하는 경우 UI 자동화 하위 트리의 루트에 대해 하나의 처리기만 추가하고 처리기는 모든 하위 항목에서 수신 대기합니다. UI 자동화 이벤트 처리기를 재귀적으로 추가하지 않습니다.

클라이언트가 IUIAutomation::RemoveAllEventHandlers 메서드를 호출하면 UI 자동화 클라이언트 프로세스에서 모든 이벤트 처리기를 제거합니다.

이벤트를 수신하고 처리하려면 콜백 인터페이스를 노출하는 이벤트 처리 개체를 구현하고 IUIAutomation::AddPropertyChangedEventHandler와 같은 이벤트 등록 메서드를 호출하여 개체를 등록해야 합니다. 콜백 인터페이스에는 단일 메서드가 있습니다. UI 자동화 이벤트가 처리될 때 이 메서드를 호출합니다.

종료 시 또는 UI 자동화 이벤트가 애플리케이션에 더 이상 관심이 없는 경우 UI 자동화 클라이언트는 다음 IUIAutomation 메서드 중 하나 이상을 호출해야 합니다.

참고

UI 자동화 클라이언트는 여러 스레드를 사용하여 이벤트 처리기를 추가하거나 제거해서는 안 됩니다. 동일한 클라이언트 프로세스에서 다른 이벤트 처리기가 추가되거나 제거되는 동안 한 이벤트 처리기가 추가되거나 제거되는 경우 예기치 않은 동작이 발생할 수 있습니다.

 

메서드 Description
RemoveAutomationEventHandler AddAutomationEventHandler를 사용하여 등록된 이벤트 처리기를 등록 취소합니다.
RemoveFocusChangedEventHandler AddFocusChangedEventHandler를 사용하여 등록된 이벤트 처리기를 등록 취소합니다.
RemovePropertyChangedEventHandler AddPropertyChangedEventHandler 또는 AddPropertyChangedEventHandlerNativeArray를 사용하여 등록된 이벤트 처리기를 등록 취소합니다.
RemoveStructureChangedEventHandler AddStructureChangedEventHandler를 사용하여 등록된 이벤트 처리기를 등록 취소합니다.
RemoveNotificationEventHandler AddNotificationEventHandler를 사용하여 등록된 이벤트 처리기를 등록 취소합니다.
RemoveAllEventHandlers 등록된 모든 이벤트 처리기를 등록 취소합니다.

 

이벤트 구독 취소 요청과 동시에 이벤트를 수신하는 경우 처리기를 구독 취소한 후 이벤트 처리기에 이벤트를 전달할 수 있습니다. COM(구성 요소 개체 모델) 표준을 따르고 참조 수가 0에 도달할 때까지 이벤트 처리기 개체가 삭제되지 않도록 하는 것이 가장 좋습니다. 이벤트 구독을 취소한 직후 이벤트 처리기를 삭제하면 이벤트가 늦게 전달될 경우 액세스 위반이 발생할 수 있습니다.

예제

UI 자동화 이벤트를 처리하는 방법을 보여 주는 코드 예제는 이벤트 처리기를 구현하는 방법을 참조하세요.

개념

UI 자동화 이벤트 개요

스레딩 문제 이해