다음을 통해 공유


클라이언트/서버 통신

WinEvents 메커니즘은 서버가 Microsoft Active Accessibility 클라이언트와 쉽게 통신할 수 있는 방법을 제공합니다. 클라이언트는 WinEvents(예: 포커스에 따라)에 반응하여 정보를 수집하는 경우가 많지만 언제든지 서버에서 정보를 자유롭게 요청할 수 있습니다.

WinEvent를 생성하는 액세스 가능한 개체에 대한 정보를 요청하려면 클라이언트가 이벤트를 처리하고 관련 액세스 가능한 개체와의 연결을 설정해야 합니다. 이를 위해 클라이언트는 다음 6단계를 수행합니다.

  • 서버는 NotifyWinEvent 를 호출하여 사용자 인터페이스 요소에 대한 각 변경 내용에 대한 WinEvent 알림을 생성합니다.
  • USER의 WinEvent 관리 코드는 클라이언트 애플리케이션이 SetWinEventHook을 사용하여 WinEvent 후크 함수를 등록했는지 확인하고 등록된 콜백 함수를 호출합니다.
  • 콜백 함수에서 클라이언트는 AccessibleObjectFromEvent 또는 기타 액세스 가능한 개체 검색 함수를 호출하여 이벤트를 생성한 개체에 대한 액세스를 요청합니다. 자세한 내용은 IAccessible 개체 검색을 참조하세요.
  • 이 Microsoft Active Accessibility API는 서버 애플리케이션에 액세스 가능한 개체를 검색하는 WM_GETOBJECT 메시지를 보냅니다.
  • WM_GETOBJECT 대한 응답으로 서버 애플리케이션은 0을 반환하거나 이벤트를 생성한 개체에 대한 일회성 참조 역할을 하는 값을 반환합니다.
  • 서버가 0을 반환하면 Microsoft Active Accessibility는 프록시 개체를 만들고 해당 주소를 클라이언트에 제공합니다. 그렇지 않으면 Microsoft Active Accessibility는 이 참조를 사용하여 IAccessible 또는 IDispatch와 같은 개체 인터페이스의 주소를 검색하고 해당 주소를 클라이언트에 제공합니다.

클라이언트에 인터페이스 주소가 있으면 액세스 가능한 개체의 IAccessible 속성 및 메서드를 호출하여 정보를 검색할 수 있습니다.

섹션 내용