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


Вызов API активной доступности

Microsoft Active Accessibility предоставляет интерфейсы программирования приложений (API) как для клиентов, так и для серверов. Большинство из них реализованы в библиотеке динамических ссылок Microsoft Active Accessibility, Oleacc.dll, но NotifyWinEvent, SetWinEventHookи UnhookWinEvent реализованы в user32.dll, которая является основным компонентом операционной системы Microsoft Windows.

Компьютеры под управлением Windows 95 или Microsoft Windows NT 4.0 не имеют Oleacc.dll и установленной правильной версии user32.dll, так как Microsoft Active Accessibility постепенно интегрировался в последующие версии Windows. В результате приложения, которые выполняются на этих платформах, явно ссылаются на Oleacc.dll во время выполнения с помощью функции LoadLibrary вместо использования библиотек импорта. Active Accessibility 1.3 поддерживает Windows 95 и Microsoft Windows NT 4.0. Более ранние версии Windows не поддерживаются microsoft Active Accessibility.

Серверные приложения используют функцию GetProcAddress для получения адреса функции Microsoft Active Accessibility, а затем вызова с помощью указателя функции. При вызове функции, реализованной в Oleacc.dll, серверные приложения используют дескриптор, возвращенный из LoadLibrary в вызове GetProcAddress. При вызове функции, определенной в user32.dll, серверные приложения вызывают GetModuleHandle, указывая "USER32", и используют возвращенный дескриптор модуля в вызове GetProcAddress.

Например, если приложение использует NotifyWinEvent, он вызывает GetProcAddress с помощью дескриптора модуля user32.dll для получения адреса функции. Если вызов выполнен успешно (то есть эта версия Windows поддерживает специальные возможности Microsoft Active), приложение устанавливает флаг, указывающий, что он безопасно вызывать NotifyWinEvent. Адрес, полученный от GetProcAddress, хранится в переменной указателя функции и используется во всем коде.