Microsoft Active Accessibility, VB6 и Ranorex

Ranorex — это инструмент для тестирования пользовательского интерфейса для Windows. Если элементы пользовательского интерфейса поддерживают Microsoft Active Accessiblity (MSAA), то он может получать обширную информацию об элементах, что очень полезно для написания тестовых сценариев.

У нас есть много устаревшего кода в VB6, который не поддерживает MSAA.

Я пытаюсь добавить эту поддержку в некоторые из наших пользовательских элементов управления VB6 следующим образом.

Я создал компонент ActiveX на C++, используя ATL. Он содержит вспомогательный класс, реализующий интерфейс IAccessible. Он также содержит функцию инициализации, которую можно вызвать из VB6.

VB6 UserControl создает вспомогательный объект и передает его дескриптор окна и имя функции инициализации. Вспомогательный объект подклассифицирует окно и обрабатывает сообщение WM_GETOBJECT, чтобы предоставить интерфейс IAccessible для окна.

Я отладил код и, насколько я могу судить, он работает. Инструмент Ranorex Spy получает интерфейс IAccessible и вызывает методы интерфейса.

Однако на самом деле Ranorex не показывает никакой информации, которую он, по-видимому, получил через этот интерфейс.

Я знаю, что это очень специфическая проблема, но есть ли у кого-нибудь опыт реализации IAccessible для использования в Ranorex или в других подобных инструментах тестирования?

Я был бы рад предоставить свой код, но я думаю, что это слишком много для нормального размещения.


person Phil Jollans    schedule 20.02.2016    source источник


Ответы (1)


Кажется, это никогда не использовалось широко. Я нашел несколько хлебных крошек, которыми могу поделиться, так что, возможно, они будут иметь какую-то ценность?

Первый:

Microsoft Active Accessibility 2.0 поставляется в качестве стандартного системного компонента в Microsoft Windows XP...

Это из MSAA20RDK\redist.txt, и далее рассказывается о том, как его можно установить в Win2K и более ранних версиях. Насколько я могу определить, части и части включены в XP и более поздние версии, поэтому вам, вероятно, не нужна загрузка RDK, в которой практически нет никакой информации и в основном только библиотеки DLL.

Хотя вот ссылка:

Microsoft Active Accessibility 2.0 Redist

Что-то, возможно, более полезное, обратите внимание, что это "действующая" ссылка для загрузки Word DOC:

Microsoft Active Accessibility 2.0

Я не нашел ссылку «страница» в MS Downloads, в которой это обсуждается. Это более крупный документ, содержащий множество подробностей, почти полностью предназначенный для программистов на C++. Однако в VB6 есть немного.

Тем не менее, это говорит вам мало, кроме:

Примеры программ Visual Basic

Книга Advanced Microsoft Visual Basic 6.0, 2-е издание (Mandelbrot Set International, Ltd.) включает главу, в которой обсуждается Active Accessibility. В главе представлен пример кода, демонстрирующий, как использовать ключевые API-интерфейсы Active Accessibility. (Майкрософт Пресс, ISBN 1-57231-893-7)

Там есть еще немного, но не намного. Цитируемую книгу может быть довольно трудно найти, я видел только одну на итальянском языке на Amazon, но покопался, и третья сторона могла продавать там или на eBay и т. Д.

По этой ссылке: Microsoft Active Accessibility информация из этого Word DOC кажется дублированной, хотя, возможно, она более актуальна.

person Bob77    schedule 20.02.2016
comment
Спасибо @ Bob77, я нашел образец программы из книги, но, похоже, он использует, а не реализует интерфейс. На Амазоне есть подержанные экземпляры книги. Функция Look Inside показывает оглавление, а глава 16 посвящена специальным возможностям, но я не очень надеюсь, что это поможет. - person Phil Jollans; 21.02.2016
comment
Из того, что я могу найти по теме, программы VB6 не могут быть серверами, только клиентами. Прости. - person Bob77; 21.02.2016
comment
Я вчера ослеп. Мой интерфейс IAccessible работает, но шпион Ranorex теперь показывает окна дважды, один раз с именем ThunderRT6UserControlDC (из VB6) и один раз с именем, возвращаемым через интерфейс специальных возможностей. Теперь мне просто нужно собрать их вместе :-). - person Phil Jollans; 21.02.2016
comment
Ну, это лучшая новость, чем невозможно сделать. Удачи! - person Bob77; 21.02.2016