• Как из программы получить доступ к UI полям другой программы?

    @rPman
    Правильный способ (не советую) - сложный, нужно выявить точную версию компонент, собрать соответствующее приложение с их использованием (только так можно будет использовать объекты и вызывать методы правильно) и инжектить его код в процесс. Тогда вы получите доступ ко всем элементам и сможете делать что то типа getText()

    Неправильный (рекомендую) - простой, симулируете действия пользователя, отправляя окну события клавитуры и мышки (или напрямую через средства ОС, например в windows это отправка сообщений WM_... в win api есть соответствующие методы), к сожалению в QT компоненты не являются win api объектами, даже label таковым не является и у вас будет просто одно окно с битмапом, а это значит для чтения содержимого окна можно использовать только экран (и распознование текста по изображению) и в некоторых случаях clipboard, например необходимое поле это EditBox, симулируем команду ctrl+a (выделить весь текст) ctrl+c (скопировать) и тут же читаем содержимое в своей программе

    Второе успешно использовалось в проекте где необходимо было получать данные из программ, написанных с использованием ОЧЕНЬ разных инструментов и следить за компонентами каждого чтобы пересобирать код инжекта каждый раз как оно обновится - геморно.
    Ответ написан
    Комментировать