다음을 통해 공유


WM_GETOBJECT 메시지 처리

Microsoft Active Accessibility와 Microsoft UI Automation은 서버 또는 공급자 애플리케이션에 WM_GETOBJECT 메시지를 보내 서버 또는 공급자가 지원하는 액세스 가능한 개체에 대한 정보를 검색합니다. 클라이언트는 WM_GETOBJECT 직접 보내지 않습니다. 대신 클라이언트가 AccessibleObjectFromPoint, AccessibleObjectFromEventAccessibleObjectFromWindow 함수를 호출할 때 이 메시지를 보냅니다. UI 자동화는 클라이언트가 IUIAutomation::ElementFromHandle, ElementFromPointGetFocusedElement호출하고 클라이언트가 등록된 이벤트를 처리할 때 WM_GETOBJECT 보냅니다.

Microsoft Active Accessibility 또는 UI Automation은 WM_GETOBJECT 메시지와 함께 개체 식별자라는 값을 전달하여 정보가 필요한 개체의 유형을 지정합니다. 메시지를 받으면 서버 또는 공급자가 개체 식별자를 검사하여 메시지에 응답하는 방법을 결정합니다. 응답은 수신 애플리케이션이 지정된 개체에 대해 Microsoft Active Accessibility(서버), UI 자동화(공급자) 또는 둘 다 구현하는지 여부에 따라 달라집니다.

  • 수신 애플리케이션이 Microsoft Active Accessibility 서버이고 WM_GETOBJECT 메시지에 OBJID_CLIENT 개체 식별자가 포함된 경우 서버는 개체의 IAccessible 인터페이스를 LresultFromObject 함수에 전달하여 얻은 값을 반환해야 합니다.
  • 수신 애플리케이션이 UI 자동화 공급자이고 개체 식별자가 UiaRootObjectId 경우 공급자는 개체의 IRawElementProviderSimple 인터페이스를 반환해야 합니다. 공급자는 UiaReturnRawElementProvider 함수를 호출하여 인터페이스를 가져옵니다.
  • 수신 애플리케이션이 Microsoft Active Accessibility 또는 UI Automation을 구현하지 않으면 WM_GETOBJECT 메시지를 DefWindowProc 함수에 전달해야 합니다. 메시지를 전달하면 접근성 프레임워크가 지정된 개체에 프록시를 사용할 수 있는지 여부를 확인할 수 있습니다.
  • 개체 식별자가 OBJID_CLIENT UiaRootObjectId가 아니면 수신 애플리케이션은 DefWindowProc 함수에 WM_GETOBJECT 메시지를 전달해야 합니다. 메시지를 전달하면 접근성 프레임워크에서 표준 UI 요소에 기본 공급자를 사용할 수 있습니다.

Microsoft Active Accessibility 및 UI 자동화는 WM_GETOBJECT 메시지에서 사용자 지정 개체 식별자를 전달하여 서버 또는 공급자에서 애플리케이션 정의 값 또는 개체를 검색할 수 있습니다. OBJID_NATIVEOM 또는 OBJID_QUERYCLASSNAMEIDX 개체 식별자를 사용하여 네이티브 개체 모델 인터페이스를 검색하거나 Oleacc.dll지원하는 특정 프록시 개체를 요청할 수 있습니다.

OBJID_CLIENTUiaRootObjectId 개체 식별자를 모두 처리하면 Microsoft Active Accessibility 서버 구현이 UI 자동화 공급자 구현과 함께 공존할 수 있습니다. 공용 컨트롤 라이브러리(ComCtl32.dll)에서 구현하는 대부분의 표준 Windows 컨트롤 및 공용 컨트롤은 Microsoft Active Accessibility 또는 UI 자동화를 구현하지 않으므로 이러한 컨트롤은 일반적으로 WM_GETOBJECT 메시지를 처리하지 않습니다. 대신 Microsoft Active Accessibility 또는 UI Automation 프레임워크는 프록시 개체를 특정 UI 요소에 사용할 수 있는지 확인합니다. 그렇지 않으면 호스트 창 개체에 대한 기본 프록시 개체를 제공합니다.