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


Вызов 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 , хранится в переменной указателя функции и используется во всем коде.