Ranorex - это инструмент для тестирования пользовательского интерфейса для Windows. Если элементы пользовательского интерфейса поддерживают Microsoft Active Accessiblity (MSAA), тогда он может получать богатую информацию об элементах, что очень полезно для написания тестовых скриптов.Microsoft Active Accessibility, VB6 и Ranorex
У нас есть много устаревшего кода в VB6, который не поддерживает MSAA.
Я пытаюсь добавить эту поддержку в некоторые из наших VB6 UserControls следующим образом.
Я создал компонент ActiveX на C++, используя ATL. Он содержит вспомогательный класс, который реализует интерфейс IAccessible. Он также содержит функцию инициализации, которую можно вызывать из VB6.
VC6 UserControl создает вспомогательный объект и передает его дескриптор окна и имя в функцию инициализации. Вспомогательный объект подклассифицирует окно и обрабатывает сообщение WM_GETOBJECT, чтобы предоставить интерфейс IAccessible для окна.
Я отлаживал код и, насколько я могу судить, он работает. Инструмент Ranorex Spy получает интерфейс IAccessible и вызывает методы на интерфейсе.
Однако Ranorex фактически не показывает какую-либо информацию, которая, по-видимому, получена через этот интерфейс.
Я знаю, что это очень специфическая проблема, но кто-нибудь имеет опыт внедрения IAccessible для использования в Ranorex или в других подобных инструментах тестирования?
Я был бы рад предоставить свой код, но я думаю, что это слишком много для обычной публикации.
Спасибо @ Bob77, я нашел образец программы из книги, но, похоже, использует и не реализует интерфейс. Используются копии книги на Amazon. Функция «Look Inside» показывает оглавление, а в главе 16 - о доступности, но я не очень надеюсь, что это поможет. –
Из того, что я могу найти по теме, программы VB6 не могут быть серверами, а только клиентами. Сожалею. – Bob77
Вчера я был слеп. Мой интерфейс IAccessible работает, но шпион Ranorex теперь показывает окна дважды, один раз с именем ThunderRT6UserControlDC (из VB6) и один раз с именем, возвращаемым через интерфейс доступности. Теперь мне просто нужно собрать их вместе :-). –