Обзор инструментов NVDA API

(По материалам официального сайта программы)
Дата публикации:2011
Поделиться в Twitter Поделиться в F******k Поделиться в VKontakte Поделиться в Telegram Поделиться в Mastodon

Для взаимодействия других приложений с программой экранного доступа NVDA её разработчики предоставляют специальную библиотеку NVDA Controller, включающую набор API функций. Библиотека позволяет сторонним программам взаимодействовать с NVDA для того, чтобы использовать функционал screenreader'а в отношении синтеза речи и брайлевского вывода.

Данный API-клиент реализован в виде динамической библиотеки, функции которой могут быть вызваны из языка программирования, поддерживающего поиск и вызов любого символа в DLL (например, ctypes в Python), либо посредством традиционных способов загрузки и связывания DLL (например, в языках C и C++).

Загрузить NVDA Controller можно по ссылкеhttp://www.nvda-project.org/nvdaControllerClient/nvdaControllerClient_20100219.7z. Размер файла 121 Кб.

Архив включает:

  • nvdaControllerClient32.dll - библиотеку API-функций для 32-битных программ, которая может включаться в состав разрабатываемого приложения.
  • nvdaControllerClient32.exp и nvdaControllerClient32.lib - файл экспорта и библиотека импорта для nvdaControllerClient32.dll (используется при компиляции проектов на C и C++).
  • nvdaControllerClient64.dll, nvdaControllerClient64.exp и nvdaControllerClient64.lib - файлы, аналогичные предыдущим за исключением того, что предназначены для 64-битных программ.
  • nvdaController.h - заголовочный файл C, содержащий объявления для всех предусмотренных функций с комментариями.
  • example_c.c - пример программы на языке C, использующей NVDA Controller.
  • example_python.py - пример программы на языке Python, использующей NVDA Controller.

API-клиент NVDA Controller распространяется на некоммерческой основе на условиях лицензии LGPL 2.1, с которой можно ознакомиться в файле "license.txt" поставляемого архива. В общих словах, это означает, что вы можете использовать NVDA Controller в любом приложении. Однако если вы вносите изменения в исходный код NVDA Controller, то должны предоставить эти изменения сообществу NVDA на условиях той же лицензии.

NVDA Controller поможет разработчикам программного обеспечения, заинтересованным в поддержке специальных возможностей, реализовать в своих продуктах максимально тесное взаимодействие с набирающим всё большую популярность свободным screenreader'ом NVDA. Однако разработчики должны понимать оборотную сторону такого решения, ориентированного исключительно на одну программу экранного доступа. Более универсальным (и более трудоемким) является реализация в приложениях поддержки технологий доступа MSAA и UI-Automation, что обеспечит доступность приложений не для одного, а для большинства современных screenreader'ов на платформе MS Windows.

Поддерживаемые функции

На данный момент NVDA Controller имеет версию 1.0 и поддерживает четыре функции. Все функции возвращают ноль в случае успешного выполнения и ненулевое значение в случае ошибки. Ошибка может означать, что не удалось связаться с NVDA или что функция была вызвана некорректным образом. Возвращаемые функциями коды ошибок являются стандартными кодами ошибок Windows.

  • Функция nvdaController_testIfRunning (void) проверяет, запущена ли программа экранного доступа NVDA. Функция не принимает параметров.
  • Функция nvdaController_speakText(const wchar_t *text) озвучивает текст средствами NVDA. В качестве параметра эта функция принимает указатель на озвучиваемый текст в кодировке Unicode.
  • Функция nvdaController_cancelSpeech( void) прерывает речь NVDA. Эта функция не принимает параметров.
  • Функция nvdaController_brailleMessage(const wchar_t *message) выводит текст на брайлевский дисплей средствами NVDA. В качестве параметра функция принимает указатель на выводимый текст в кодировке Unicode.

Пример использования

Ниже приведен пример использования клиентского API NVDA Controller в консольном приложении, написанном на языке программирования C. Это приложение в качестве параметра командной строки принимает текст, который озвучивает средствами NVDA и отображает на брайлевском дисплее. Для простоты не выполняются некоторые проверки на ошибки.

#define UNICODE
#include <windows.h>
#include "nvdaController.h"

/* Подключаем библиотеку импорта */
/* То же самое можно сделать в настройках проекта */
/* используемой среды разработки */
#pragma comment(lib, "nvdaControllerClient32.lib")

int wmain(int argc, wchar_t* argv[])
{
	if (argc < 2)
	{
		MessageBox(0,L"Не задан текст для вывода!",L"Ошибка",0);
		return 1;
	}
	
	/* Проверяем, запущена ли программа NVDA */
	/* и пытаемся связаться с ней */
	if(0 != nvdaController_testIfRunning())
	{
		MessageBox(0,L"Не удалось связаться с NVDA!",L"Ошибка",0);
		return 2;
	}
	
	/* Вывод речевого сообщения */
	nvdaController_speakText(argv[1]);
	
	/* Вывод сообщения на брайлевский дисплей */
	nvdaController_brailleMessage(argv[1]);
	return 0;
}

После компиляции и сборки приложения (например, под именем test.exe) запустите интерпретатор командной строки cmd.exe и, перейдя в каталог, где расположен файл test.exe, наберите:

test.exe "Привет, мужики!"


Распространение материалов сайта означает, что распространитель принял условия лицензионного соглашения.
Идея и реализация: © Владимир Довыденков и Анатолий Камынин,  2004-2024