WinEvents란?

서버 애플리케이션 및 운영 체제는 WinEvents를 사용하여 시스템 또는 사용자 인터페이스에서 변경이 발생할 때 클라이언트에 알립니다.

WinEvent 지원은 다음을 제공하는 Windows 운영 체제의 기능입니다.

  • 클라이언트가 이벤트 알림을 등록하는 간단한 방법입니다.
  • 서버에 클라이언트 코드를 삽입하는 메커니즘입니다.
  • 서버에서 관심 있는 클라이언트로 이벤트 라우팅
  • 대부분의 HWND 기반 컨트롤에 대한 자동 이벤트 생성.

HWND 기반 컨트롤에 대한 이벤트 생성은 서버 개발자에게 특히 중요합니다. Microsoft Active Accessibility 런타임은 모든 표준 UI 요소에 대한 IAccessible 프록시를 제공합니다. 마찬가지로 시스템은 HWND 기반 컨트롤에서 다른 작업을 생성, 파괴, 이동, 크기 조정 또는 수행할 때마다 적절한 WinEvents를 자동으로 생성합니다.

일반 HWND 이벤트를 비롯한 일부 WinEvent는 시스템에서 자동으로 지원됩니다. 상태 변경 또는 특정 컨트롤과 관련된 선택 이벤트와 같은 다른 유형의 WinEvent는 Microsoft Active Accessibility 서버에서 지원됩니다.

UI에 영향을 주는 이벤트가 발생하면 서버는 NotifyWinEvent 함수를 호출하여 모든 관심 있는 클라이언트에 이벤트 알림을 브로드캐스트할 수 있습니다. 함수 호출에는 발생한 이벤트의 유형과 이벤트가 적용되는 UI 요소를 식별하는 정보가 포함됩니다. 클라이언트는 이 정보를 사용하여 UI 요소에 대한 IAccessible 개체를 검색하고 자세한 정보를 수집할 수 있습니다.

예를 들어 컨트롤의 이름이 변경되었음을 클라이언트에 알리기 위해 서버는 NotifyWinEvent 를 호출하고 이벤트 매개 변수에 EVENT_OBJECT_NAMECHANGE 전달합니다. 시스템은 특정 이벤트를 수신하도록 등록된 클라이언트를 확인하고 등록된 콜백 함수를 호출하여 응답합니다. 이벤트에 대해 등록된 클라이언트가 없는 경우 NotifyWinEvent 에 대한 서버의 호출은 "작업 없음"과 비슷하며 성능 영향은 무시할 수 있습니다.

서버는 NotifyWinEvent 를 호출하여 이벤트가 발생한 후 시스템에 이벤트를 알립니다. 이벤트가 발생하기 전에 시스템에 이벤트를 알리면 안 됩니다.

이벤트에 대한 알림을 받으려면 클라이언트는 SetWinEventHook를 사용하여 콜백 후크 함수를 등록합니다. 클라이언트는 가능한 모든 이벤트에 대해 단일 후크 함수를 설정하거나 개별 이벤트 범위에 대해 여러 후크 함수를 설정합니다. 자세한 내용은 후크 함수 등록을 참조하세요.

Microsoft Active Accessibility가 이벤트에 대한 알림을 받으면 해당 이벤트에 등록된 후크 함수를 호출하여 NotifyWinEvent의 매개 변수를 전달합니다.