Поделиться через


Обработка сообщения WM_GETOBJECT

Как Microsoft Active Accessibility, так и Microsoft модель автоматизации пользовательского интерфейса отправлять WM_GETOBJECT сообщение на сервер или приложение поставщика для получения сведений о доступном объекте, поддерживаемом сервером или поставщиком. Клиенты никогда не отправляют WM_GETOBJECT напрямую. Вместо этого Microsoft Active Accessibility отправляет это сообщение, когда клиент вызывает функции AccessibleObjectFromPoint, AccessibleObjectFromEvent и AccessibleObjectFromWindow . модель автоматизации пользовательского интерфейса отправляет WM_GETOBJECT, когда клиент вызывает IUIAutomation::ElementFromHandle, ElementFromPoint и GetFocusedElement, а также при обработке событий, для которых клиент зарегистрирован.

Microsoft Active Accessibility или модель автоматизации пользовательского интерфейса указывает тип объекта, для котором ему требуются сведения, передавая значение с именем идентификатор объекта с сообщением WM_GETOBJECT. При получении сообщения сервер или поставщик проверяет идентификатор объекта, чтобы определить, как реагировать на сообщение. Ответ зависит от того, реализует ли принимающее приложение Microsoft Active Accessibility (сервер), модель автоматизации пользовательского интерфейса (поставщик) или ни для указанного объекта.

  • Если принимающее приложение является сервером Microsoft Active Accessibility и сообщение WM_GETOBJECT содержит идентификатор объекта OBJID_CLIENT, сервер должен вернуть значение, полученное путем передачи интерфейса IAccessible объекта в функцию LresultFromObject .
  • Если принимающее приложение является поставщиком модель автоматизации пользовательского интерфейса, а идентификатор объекта — UiaRootObjectId, поставщик должен вернуть интерфейс IRawElementProviderSimple объекта . Поставщик получает интерфейс, вызывая функцию UiaReturnRawElementProvider .
  • Если принимающее приложение не реализует ни Microsoft Active Accessibility, ни модель автоматизации пользовательского интерфейса, оно должно передать WM_GETOBJECT сообщение в функцию DefWindowProc. Передача сообщения позволяет платформе специальных возможностей определить, доступен ли прокси-сервер для указанного объекта.
  • Если идентификатор объекта не является ни OBJID_CLIENT ни UiaRootObjectId, принимающее приложение должно передать WM_GETOBJECT сообщение функции DefWindowProc . Передача сообщения позволяет платформе специальных возможностей использовать поставщики по умолчанию для стандартных элементов пользовательского интерфейса.

Microsoft Active Accessibility и модель автоматизации пользовательского интерфейса могут передавать пользовательские идентификаторы объектов в WM_GETOBJECT сообщении для получения определяемых приложением значений или объектов с сервера или поставщика. Идентификатор объекта OBJID_NATIVEOM или OBJID_QUERYCLASSNAMEIDX можно использовать для получения собственного интерфейса объектной модели или запроса конкретного прокси-объекта, поддерживаемого Oleacc.dll.

При обработке идентификаторов объектов OBJID_CLIENT и UiaRootObjectId реализация сервера Microsoft Active Accessibility может сосуществовать вместе с реализацией поставщика модель автоматизации пользовательского интерфейса. Поскольку большинство стандартных элементов управления Windows и общих элементов управления, реализованных в общей библиотеке элементов управления (ComCtl32.dll), не реализуют microsoft Active Accessibility или модель автоматизации пользовательского интерфейса, эти элементы управления обычно не обрабатывают сообщение WM_GETOBJECT. Вместо этого платформа Microsoft Active Accessibility или модель автоматизации пользовательского интерфейса проверяет, доступен ли прокси-объект для определенного элемента пользовательского интерфейса. В противном случае он предоставляет прокси-объект по умолчанию для объекта окна узла.