다음을 통해 공유


WinEvents 및 활성 접근성

Microsoft Active Accessibility 서버는 액세스 가능한 개체가 변경되면 클라이언트에 알리기 위해 WinEvents 발생시킵니다. 서버에서 클라이언트에 변경 내용에 대해 알 수 있는 여러 가지 조건이 있습니다. Microsoft Active Accessibility에서 정의한 각 이벤트 상수 클라이언트에 알림이 표시되는 조건을 설명합니다. 예를 들어 WinEvents는 다음 신호를 보낼 수 있습니다.

  • 개체가 생성되거나 파괴될 때
  • 개체가 포커스를 받거나 잃으면
  • 개체의 상태 또는 위치가 변경되는 경우
  • 개체의 속성이 변경되는 경우

클라이언트 애플리케이션은 이벤트 알림을 자동으로 수신하지 않습니다. SetWinEventHook 함수를 호출하여 수신할 이벤트를 지정해야 합니다. SetWinEventHook를 사용하여 클라이언트는 하나 이상의 이벤트를 수신하도록 등록하고, 지정된 이벤트를 처리하기 위해 후크 함수를 설정합니다. 클라이언트는 동일한 후크 함수를 사용하여 여러 유형의 이벤트를 처리하거나 다중 후크 함수를 사용할 수 있습니다. 클라이언트는 등록해야 하는 각 후크 함수에 대해 SetWinEventHook 한 번 호출합니다.

후크 함수는 클라이언트의 코드 본문, 클라이언트 프로세스에 매핑된 DLL 또는 서버 프로세스에 매핑된 DLL에 있습니다. 이러한 각 방법에는 장점과 단점이 있습니다. 자세한 내용은 In-Context 및 컨텍스트 외 후크 함수참조하세요.

클라이언트에 이벤트 발생을 알리기 위해 서버는 NotifyWinEvent호출합니다. 시스템은 클라이언트 애플리케이션이 이벤트에 대한 후크 함수를 설정했는지 확인하고 필요에 따라 적절한 후크 함수를 호출합니다.

클라이언트의 후크 함수가 호출되면 이벤트를 생성하는 이벤트 및 개체를 설명하는 여러 매개 변수를 받습니다. 이벤트를 생성한 개체에 액세스하기 위해 클라이언트 후크 함수는 AccessibleObjectFromEvent호출합니다.

메모

WinEvents를 수신하도록 등록된 클라이언트가 없는 경우 NotifyWinEvent 호출하는 서버에 미치는 성능 영향은 무시할 수 있습니다.

서버는 NotifyWinEvent 호출하여 액세스 가능한 개체의 변경 내용만을 호출합니다. 시스템 제공 사용자 인터페이스 요소의 변경 내용은 NotifyWinEvent 호출하지 않습니다.

Event-Driven 통신

클라이언트는 WinEvent 알림을 받기 전에 WinEvent 후크를 등록해야 합니다. 불필요한 콜백을 방지하고 성능을 향상시키려면 클라이언트는 수신해야 하는 이벤트에 대해서만 등록하는 것이 좋습니다.

후크 프로시저 내에서 클라이언트는 AccessibleObjectFromEvent 호출하여 이벤트가 적용되는 요소에 대한 IAccessible 개체를 검색할 수 있습니다. 이 개체를 사용하면 클라이언트가 IAccessible 메서드를 호출하여 정보를 검색하거나 UI 요소와 상호 작용할 수 있습니다.

WinEvents