WM_GETOBJECT сообщение

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

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

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

Параметры

dwFlags

Предоставляет дополнительные сведения о сообщении и используется только системой. Серверы передают dwFlags в качестве параметра wParam в вызове LresultFromObject при обработке сообщения.

dwObjId

Идентификатор объекта. Это значение является одной из констант идентификатора объекта или пользовательским идентификатором объекта. Серверное приложение должно проверка это значение, чтобы определить тип запрашиваемой информации. Перед сравнением этого значения со значениями OBJID_ сервер должен привести его к DWORD; В противном случае в 64-разрядной версии Windows расширение знака lParam может помешать сравнению.

  • Если dwObjId является одним из OBJID_ значений, таких как OBJID_CLIENT, запрос выполняется для объекта Microsoft Active Accessibility, который реализует IAccessible.
  • Если значение dwObjId равно UiaRootObjectId, запрос выполняется для поставщика модель автоматизации пользовательского интерфейса. Если сервер реализует модель автоматизации пользовательского интерфейса, он должен вернуть поставщик с помощью функции UiaReturnRawElementProvider.
  • Если параметр dwObjIdOBJID_NATIVEOM, запрос выполняется для базовой объектной модели элемента управления. Если элемент управления поддерживает этот запрос, он должен вернуть соответствующий COM-интерфейс, вызвав функцию LresultFromObject .
  • Если значение dwObjIdOBJID_QUERYCLASSNAMEIDX, то запрос на то, чтобы элемент управления идентифицирует себя как стандартный элемент управления Windows или общий элемент управления, реализованный общей библиотекой элементов управления (ComCtrl.dll).

Возвращаемое значение

Если окну или элементу управления не нужно отвечать на это сообщение, оно должно передаваться в функцию DefWindowProc ; В противном случае окно или элемент управления должны возвращать значение, соответствующее запросу, указанному dwObjId:

  • Если окно или элемент управления реализуют модель автоматизации пользовательского интерфейса, окно или элемент управления должны возвращать значение, полученное вызовом функции UiaReturnRawElementProvider.
  • Если параметр dwObjIdOBJID_NATIVEOM и окно предоставляет собственную объектную модель, окна должны возвращать значение, полученное вызовом функции LresultFromObject .
  • Если параметр dwObjIdOBJID_CLIENT и окно реализует IAccessible, окно должно возвращать значение, полученное при вызове функции LresultFromObject .

Комментарии

Когда клиент вызывает AccessibleObjectFromWindow или любую другую функцию AccessibleObjectFromX , извлекающую интерфейс к объекту, Microsoft Active Accessibility отправляет сообщение WM_GETOBJECT в соответствующую процедуру окна в соответствующем серверном приложении. При обработке WM_GETOBJECT серверные приложения вызывают LresultFromObject и используют возвращаемое значение этой функции в качестве возвращаемого значения для сообщения. Microsoft Active Accessibility в сочетании с библиотекой COM выполняет соответствующую маршалинг и передает указатель интерфейса с сервера обратно клиенту.

Серверы не реагируют на WM_GETOBJECT до полной инициализации объекта или после его закрытия. Когда приложение создает новое окно, система отправляет EVENT_OBJECT_CREATE для уведомления клиентов перед отправкой сообщения WM_CREATE в процедуру окна приложения. Так как многие приложения используют WM_CREATE для запуска процесса инициализации, серверы не отвечают на сообщение WM_GETOBJECT до завершения обработки сообщения WM_CREATE .

Сервер использует WM_GETOBJECT для выполнения следующих задач:

Для клиентов это означает, что они могут получать отдельные указатели интерфейса для одного и того же элемента пользовательского интерфейса в зависимости от действия сервера. Чтобы определить, указывают ли два указателя интерфейса на один и тот же элемент пользовательского интерфейса, клиенты сравнивают свойства IAccess объекта . Сравнение указателей не работает.

Требования

Требование Значение
Минимальная версия клиента
Windows 2000 Professional [только классические приложения]
Минимальная версия сервера
Windows Server 2003 [только классические приложения]
Распространяемые компоненты
Активные специальные возможности 1.3 RDK в Windows NT 4.0 с пакетом обновления 6 (SP6) и более поздних версий и Windows 95
Заголовок
Winuser.h (включая Windows.h)

См. также раздел

Обработка WM_GETOBJECT

Принцип работы WM_GETOBJECT

LresultFromObject