|
В основу этой статьи положены материалы и исходные коды, любезно предоставленные Sergey SFeLi. Внимание! Исходные коды программ и сопутствующая информация представлены как есть и могут быть использованы желающими на свой страх и риск. Никаких гарантий (в том числе того, что приводимая информация является безопасной и не содержит ошибок) не предоставляется. Основные принципыРазработчиками программы экранного доступа JAWS предусмотрен программный интерфейс (API), позволяющий взаимодействовать приложениям напрямую с JAWS без посредства скриптов. Этот программный интерфейс содержит весьма узкий набор возможностей, тем не менее позволяющих программистам улучшить доступность своих приложений для работы под JAWS. Известная библиотека jfwapi.dll использует возможности этого интерфейса, однако не всегда программист заинтересован "таскать" за собой эту dll, а даже наоборот - хотел бы включить функции для работы с JAWS в свое приложение. Кроме того, ряд версий библиотеки jfwapi.dll содержат ошибки (например, не работает функция Рассмотрим, как реализован программный интерфейс JAWS. Окно JAWS обрабатывает ряд вспомогательных сообщений, благодаря чему внешнее приложение может управлять работой JAWS, посылая ему соответствующее сообщение при помощи системных функций SendMessage или PostMessage. Некоторые из этих сообщений описаны ниже. Имена сообщений выбраны в известной степени произвольно, но главное - это числовой код сообщений и назначение их параметров. Для того чтобы через JAWS озвучить строку текста, необходимо функцией
Параметр lParam должен содержать указатель на структуру COPYDATASTRUCT, которая должна содержать озвучиваемую строку текста. Ниже приведен список сообщений, обрабатываемых окном JAWS. В списке также дано краткое описание сообщений и их параметров. Все сообщения посылаются при помощи функции
Исходные коды функцийИсходный код функций, реализующих отправку этих сообщений, достаточно прозрачен и не требует особых пояснений. Ссылка на архив с исходниками находится в соответстсвующем разделе. Далее приводится текст трех файлов:
/* --- Файл jfwms.h --- */ #ifndef _JFWMSG_H_ #defined _JFWMSG_H_ #define WM_JFW_STOPSPEECH 0x0419#define WM_JFW_SAYSTRING 0x041a #define WM_JFW_SAYNOWAIT 0x041b #define WM_JFW_RUNSCRIPT 0x0439 #define WM_JFW_ENABLE 0x044a #define WM_JFW_DISABLE 0x044b #endif /* --- Файл jfwapi.h --- */ #ifndef _JFWAPI_H_ #define _JFWAPI_H_ extern BOOL WINAPI JFWDisable(void); extern BOOL WINAPI JFWEnable(BOOL bNoDDIHooks); extern BOOL WINAPI JFWFindWindow(HWND * hWnd); extern BOOL WINAPI JFWRunFunction(LPCSTR szName); extern BOOL WINAPI JFWRunScript(LPCSTR szName); extern BOOL WINAPI JFWSayString(LPSTR szStringToSpeak, BOOL bInterrupt); extern BOOL WINAPI JFWStopSpeech(void); #endif /* --- Файл jfwapi.c --- */ #include Ссылки по теме
|
|||||||||
Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения. Идея и реализация: © Владимир Довыденков и Анатолий Камынин, 2004-2024 |
Социальные сети