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 или в других подобных инструментах тестирования?
Я был бы рад предоставить свой код, но я думаю, что это слишком много для нормального размещения.