WM_GETOBJECT消息

由 Microsoft Active Accessibility 和 Microsoft UI 自动化 发送,以获取有关服务器应用程序中包含的可访问对象的信息。

应用程序从不直接发送此消息。 Microsoft Active Accessibility 发送此消息以响应对 AccessibleObjectFromPointAccessibleObjectFromEventAccessibleObjectFromWindow 的调用。 但是,服务器应用程序会处理此消息。 UI 自动化发送此消息是为了响应对 IUIAutomation::ElementFromHandleElementFromPointGetFocusedElement 的调用,以及处理客户端已注册的事件时发送此消息。

dwFlags = (WPARAM)(DWORD) wParam;
dwObjId = (LPARAM)(DWORD) lParam;

参数

dwFlags

提供有关消息的其他信息,仅供系统使用。 服务器在处理消息时,在调用 LresultFromObject 时将 dwFlags 作为 wParam 参数传递。

dwObjId

对象标识符。 此值是 对象标识符 常量之一或自定义对象标识符。 服务器应用程序必须检查此值才能标识所请求的信息类型。 在将此值与OBJID_值进行比较之前,服务器必须将其强制转换为 DWORD;否则,在 64 位 Windows 上, lParam 的符号扩展可能会干扰比较。

  • 如果 dwObjId 是OBJID_值之一(如 OBJID_CLIENT),则请求针对实现 IAccessible 的 Microsoft Active Accessibility 对象。
  • 如果 dwObjId 等于 UiaRootObjectId,则请求针对UI 自动化提供程序。 如果服务器正在实现UI 自动化,则应使用 UiaReturnRawElementProvider 函数返回提供程序。
  • 如果 dwObjId为OBJID_NATIVEOM,则请求针对控件的基础对象模型。 如果控件支持此请求,则它应通过调用 LresultFromObject 函数返回相应的 COM 接口。
  • 如果 dwObjId是OBJID_QUERYCLASSNAMEIDX,则请求让控件将自身标识为标准 Windows 控件或由公共控件库 (ComCtrl.dll) 实现的通用控件。

返回值

如果窗口或控件不需要响应此消息,它应将消息传递给 DefWindowProc 函数;否则,窗口或控件应返回对应于 dwObjId 指定的请求的值:

备注

当客户端调用 AccessibleObjectFromWindow 或检索对象接口的任何其他 AccessibleObjectFromX 函数时,Microsoft Active Accessibility 会将 WM_GETOBJECT 消息发送到相应服务器应用程序中的相应窗口过程。 在处理 WM_GETOBJECT时,服务器应用程序调用 LresultFromObject ,并将此函数的返回值用作消息的返回值。 Microsoft Active Accessibility 与 COM 库一起执行适当的封送处理,并将接口指针从服务器传递回客户端。

在对象完全初始化之前或开始关闭之后,服务器不会响应 WM_GETOBJECT 。 当应用程序创建新窗口时,系统会在将 WM_CREATE 消息发送到应用程序的窗口过程之前发送 EVENT_OBJECT_CREATE 通知客户端。 由于许多应用程序使用 WM_CREATE 来启动其初始化过程,因此服务器在处理 完WM_CREATE 消息后才会响应 WM_GETOBJECT 消息。

服务器使用 WM_GETOBJECT 执行以下任务:

对于客户端,这意味着它们可能会收到相同用户界面元素的不同接口指针,具体取决于服务器的操作。 若要确定两个接口指针是否指向同一用户界面元素,客户端将比较 对象的 IAccessible 属性。 比较指针不起作用。

要求

要求
最低受支持的客户端
Windows 2000 Professional [仅限桌面应用]
最低受支持的服务器
Windows Server 2003 [仅限桌面应用]
可再发行组件
具有 SP6 及更高版本和 Windows 95 的 Windows NT 4.0 上的活动辅助功能 1.3 RDK
标头
Winuser.h (包括 Windows.h)

另请参阅

如何处理WM_GETOBJECT

WM_GETOBJECT的工作原理

LresultFromObject