Создал форму и бросил на неё кнопку. Скачал http://www.microsoft.com/downloads/details.aspx?familyid=3755582A-A707-460A-BF21-1373316E13F0&displaylang=en#filelist AccExplorer32 и http://www.codeplex.com/Release/ProjectReleases.aspx?ProjectName=AccCheck&ReleaseId=13621 UI Accessibility Checked
Запустил программу, выбрал окно. Я так понимаю Qt сама предоставляет доступ к своим классам и мне в принципе не надо ничего оборачивать или на картинке должно быть что-то другое?
Не нашел примеров клиента/сервера. Хочу понять как из одной Qt программы достучаться до другой Qt программы, надо ли для этого использовать QProcess или что-то еще.
A Qt application will typically be an AT-Server, but specialized programs might also function like AT-Clients.
В общем получается следующая картина. Qt автоматически создает accessible интерфейсы для каждого стандартного виджета. Класс QAccessible является клиентом, а класс QAccessibleInterface - сервером. При этом root объектом является указатель на QApplication. Чтобы получить доступ к дочерним QObject'aм надо использовать метод QAccessibleInterface::navigate(). В зависимости от параметров будут возвращаться указатели либо на детишек (child), либо на сестрёнок (sibling) и т.п. Есть еще загадочный базовый класс QAccessiblePlugin для подключаемых плагинов, в принципе они могут выступать в роли сервера.
Я еще не пробовал гонять эти классы и наверное не буду, т.к. получается, что чужой софт, который использует API ОС где выполняется программа - имеет доступ к моим интерфейсам, а сама Qt не может наладить связь со своими же программами выполняющимися параллельно. Максимум - с чужими плагинами и она должна знать об их существовании. Обидно, что QProcess не умеет возвращать указатель на QApplication дочернего процесса на базе библиотеки Qt или приаттачиваться к чужим процессам.
Я сначала думал использовать эти классы другим образом, чтобы получить список всех QObject'ов. Но к сожалению всеми объектами, которые могут быть предоставлены являются QWidget'ы, а к ним доступ есть и без этих сложных интерфейсов. В общем классы писались для ОС, чтобы она могла читать текст на компонентах для слепых и управлять программой внешними устройствами отличными от клавиатуры и мышки. Ничего более полезного из этого не извлечь.
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)