Microsoft Active Accessibility 和 Microsoft UI 自动化将 WM_GETOBJECT 消息发送到服务器或提供程序应用程序,以检索有关服务器或提供程序支持的可访问对象的信息。 客户端永远不会直接发送 WM_GETOBJECT 。 相反,Microsoft Active Accessibility 在客户端调用 AccessibleObjectFromPoint、AccessibleObjectFromEvent 和 AccessibleObjectFromWindow 函数时发送此消息。 当客户端调用 IUIAutomation::ElementFromHandle、ElementFromPoint 和 GetFocusedElement 以及处理客户端已注册的事件时,UI 自动化将发送WM_GETOBJECT。
Microsoft Active Accessibility 或 UI 自动化通过传递名为 对象标识符 的值以及 WM_GETOBJECT 消息来指定它需要信息的对象类型。 收到消息时,服务器或提供程序会检查对象标识符以确定如何响应消息。 响应取决于接收应用程序是针对指定对象实现Microsoft活动辅助功能(服务器)、UI 自动化(提供程序),还是两者都不实现。
- 如果接收应用程序是Microsoft Active Accessibility服务器,并且WM_GETOBJECT消息包含OBJID_CLIENT的对象标识符,则服务器应返回通过将对象的IAccessible接口传递给LresultFromObject函数获取的值。
 - 如果接收应用程序是 UI 自动化提供程序,并且对象标识符为 UiaRootObjectId,则提供程序应返回对象的 IRawElementProviderSimple 接口。 提供程序通过调用 UiaReturnRawElementProvider 函数来获取接口。
 - 如果接收应用程序既未实现Microsoft Active Accessibility 和 UI 自动化,则应将 WM_GETOBJECT 消息传递给 DefWindowProc 函数。 传递消息使辅助功能框架能够确定代理是否可用于指定对象。
 - 如果对象标识符既不是 OBJID_CLIENT 也不是 UiaRootObjectId,接收应用程序应将 WM_GETOBJECT 消息传递给 DefWindowProc 函数。 传递该消息可使无障碍框架使用标准 UI 元素的默认提供程序。
 
Microsoft Active Accessibility 和 UI 自动化可以在 WM_GETOBJECT 消息中传递自定义对象标识符,以从服务器或提供程序检索应用程序定义的值或对象。 OBJID_NATIVEOM或OBJID_QUERYCLASSNAMEIDX对象标识符可用于检索本机对象模型接口,或请求 Oleacc.dll支持的特定代理对象。
通过处理 OBJID_CLIENT 和 UiaRootObjectId 对象标识符,Microsoft Active Accessibility 服务器实现可以与 UI 自动化提供程序实现共存。 由于由通用控件库(ComCtl32.dll)实现的大多数标准 Windows 控件和通用控件都未实现Microsoft活动辅助功能或 UI 自动化,因此这些控件通常不会处理 WM_GETOBJECT 消息。 相反,Microsoft 的活动辅助功能或 UI 自动化框架会检查是否有可用于特定 UI 元素的代理对象。 否则,它为主机窗口对象提供默认代理对象。