Получение объекта IAccessible

Microsoft Active Accessibility предоставляет такие функции, как AccessObjectFromWindow и AccessObjectFromPoint, которые позволяют клиентам получать доступные объекты. Эти функции возвращают указатель интерфейса IDispatch или указатель интерфейса IAccessible, с помощью которого клиенты получают сведения о доступном объекте.

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

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

Чтобы получить указатель интерфейса IAccessible

  1. Клиент вызывает одну из функций AccessibleObjectFromX.

  2. Oleacc.dll отправляет на сервер сообщение WM_GETOBJECT.

  3. Сервер определяет, какой элемент пользовательского интерфейса соответствует запросу.

  4. Сервер либо возвращает значение ноль для запроса прокси-сервера Oleacc.dll,

    Или

    Возвращает объект IAccessible (собственная реализация). Для этого выполните указанные ниже действия.

    • Создает объект IAccessible для элемента.
    • Вызывает LresultFromObject для маршалирования указателя объекта.
    • Возвращает результат LRESULT для Oleacc.dll.
  5. Oleacc.dll проверяет возвращаемое значение из WM_GETOBJECT.

    Если он равен нулю, Oleacc.dll создает прокси-объект и возвращает его клиенту.

    Или

    Если это ненулевое значение, Oleacc.dll вызывает ObjectFromLresult, чтобы отменить удаление собственного указателя объекта IAccessible и возвращает его клиенту.