Russian Qt Forum
Ноябрь 22, 2024, 23:58
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
[Решено] Доступ к элементам чужого окна
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: [Решено] Доступ к элементам чужого окна (Прочитано 9140 раз)
arhiv6
Гость
[Решено] Доступ к элементам чужого окна
«
:
Сентябрь 07, 2015, 22:02 »
Добрый день. Есть сторонняя программа, представляющая из себя форму с несколькими текстовыми полями. Хочется получить доступ к этим текстовым полям (прочитать их) из своей программы (написанной на Qt), чтобы дальше эти данные обрабатывать. Сейчас приходится вручную в каждом поле выделить текст, скопировать и вставить в соответствующее поле на своей форме. Это долго и неудобно, хочется автоматизировать. Вроде можно это сделать с помощью AutoIt, но прежде чем приступить к изучению его basic-подобного языка решил узнать поспрашивать на этом форуме:
Можно ли в Windows получить доступ из своей программы к элементам чужого окна без использования стороннего софта (вроде AutoIt)?
«
Последнее редактирование: Сентябрь 15, 2015, 21:16 от arhiv6
»
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Доступ к элементам чужого окна
«
Ответ #1 :
Сентябрь 07, 2015, 22:08 »
Можно. Если Винда, то на ВинАПИ. Погугли про убегающую кнопку Пуск.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Bepec
Гость
Re: Доступ к элементам чужого окна
«
Ответ #2 :
Сентябрь 07, 2015, 22:21 »
Это зависит от программы, с которой вы хотите снять информацию. Если там делфячий или виндосовские контролы - да, можно. Если там что то типо Qt - придётся вам извращаться с AutoIt.
Как проверить? Взять утилиту Spy x32 или x64 под вашу систему и потыкать прицелом в текстовые поля. Если они как различные контролы отображаются - значит всё гуд, можно изучать winapi. Если же там везде тыкается главное окно программы, значит всё печально => AutoIt
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Доступ к элементам чужого окна
«
Ответ #3 :
Сентябрь 09, 2015, 08:14 »
Цитата: Bepec от Сентябрь 07, 2015, 22:21
Это зависит от программы, с которой вы хотите снять информацию. Если там делфячий или виндосовские контролы - да, можно. Если там что то типо Qt - придётся вам извращаться с AutoIt.
Как проверить? Взять утилиту Spy x32 или x64 под вашу систему и потыкать прицелом в текстовые поля. Если они как различные контролы отображаются - значит всё гуд, можно изучать winapi. Если же там везде тыкается главное окно программы, значит всё печально => AutoIt
Вроде же в Qt5 контролы имеют свои виндовые хендлы, не?
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
Bepec
Гость
Re: Доступ к элементам чужого окна
«
Ответ #4 :
Сентябрь 09, 2015, 08:17 »
Хз, надо проверить, но в версиях 4.* данные достать нереально. Всё окно представляет собой фанеру.
PS да и по идее сам механизм рисования делает невозможным использование виндосовских контролов. Надо уточнить.
Записан
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Доступ к элементам чужого окна
«
Ответ #5 :
Сентябрь 09, 2015, 08:18 »
Да, с 4 я согласен, там Кьют сам все рисовал.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: Доступ к элементам чужого окна
«
Ответ #6 :
Сентябрь 09, 2015, 10:58 »
Цитата: Пантер от Сентябрь 09, 2015, 08:14
Вроде же в Qt5 контролы имеют свои виндовые хендлы, не?
Откуда такие данные?
Вроде как виджеты в Qt5 особенно не переделывались по сравнению с Qt4.
Да по идее и не должны были так кардинально измениться.
Записан
Qt 5.11/4.8.7 (X11/Win)
Пантер
Administrator
Джедай : наставник для всех
Offline
Сообщений: 5876
Жаждущий знаний
Re: Доступ к элементам чужого окна
«
Ответ #7 :
Сентябрь 09, 2015, 11:24 »
ХЗ. Помню, кто-то говорил мне об этом. Утверждать не буду на 146%.
Записан
1. Qt - Qt Development Frameworks; QT - QuickTime
2. Не используйте в исходниках символы кириллицы!!!
3. Пользуйтесь тегом code при оформлении сообщений.
GreatSnake
Джедай : наставник для всех
Offline
Сообщений: 2921
Re: Доступ к элементам чужого окна
«
Ответ #8 :
Сентябрь 09, 2015, 11:40 »
Имхо, огромный плюс Qt в том, что он сам рисует контролы.
Мало того, что это обеспечивает кросс-платформенность, так и обеспечивает тюнинг через QSS.
Записан
Qt 5.11/4.8.7 (X11/Win)
arhiv6
Гость
Re: Доступ к элементам чужого окна
«
Ответ #9 :
Сентябрь 15, 2015, 21:14 »
Всем спасибо. По совету
Пантер
реализовал с помощью WinAPI.
Цитировать
Вроде же в Qt5 контролы имеют свои виндовые хендлы, не?
Нет, по крайней мере через Control Viewer (аналог Spy) никакая информация об элементах формы не доступна.
Записан
Bepec
Гость
Re: [Решено] Доступ к элементам чужого окна
«
Ответ #10 :
Сентябрь 16, 2015, 01:37 »
А как реализовал то? Если программа не имела хендлов?
Записан
arhiv6
Гость
Re: [Решено] Доступ к элементам чужого окна
«
Ответ #11 :
Сентябрь 20, 2015, 22:33 »
Цитировать
Нет, по крайней мере через Control Viewer (аналог Spy) никакая информация об элементах формы не доступна.
- это я
о своей
Qt5 программе.
Записан
sergek
Гипер активный житель
Offline
Сообщений: 872
Мы должны приносить пользу людям.
Re: Доступ к элементам чужого окна
«
Ответ #12 :
Сентябрь 21, 2015, 20:41 »
Цитата: arhiv6 от Сентябрь 15, 2015, 21:14
Всем спасибо. По совету
Пантер
реализовал с помощью WinAPI.
Вопрос об этом. Главное окно, естественно, ловится. А все контролы внутри - нет.
Записан
Qt 5.13.0 Qt Creator 5.0.1
Win10, Ubuntu 20.04
Igors
Джедай : наставник для всех
Offline
Сообщений: 11445
Re: [Решено] Доступ к элементам чужого окна
«
Ответ #13 :
Сентябрь 22, 2015, 10:07 »
Если нужно автоматизировать copy/paste, то не лучше ли сделать чужому окну нужные move и resize а затем запустить записанный скрипт нажатий мыша и клавы?
Записан
Страниц: [
1
]
Вверх
Печать
« предыдущая тема
следующая тема »
Перейти в:
Пожалуйста, выберите назначение:
-----------------------------
Qt
-----------------------------
=> Вопросы новичков
=> Уроки и статьи
=> Установка, сборка, отладка, тестирование
=> Общие вопросы
=> Пользовательский интерфейс (GUI)
=> Qt Quick
=> Model-View (MV)
=> Базы данных
=> Работа с сетью
=> Многопоточное программирование, процессы
=> Мультимедиа
=> 2D и 3D графика
=> OpenGL
=> Печать
=> Интернационализация, локализация
=> QSS
=> XML
=> Qt Script, QtWebKit
=> ActiveX
=> Qt Embedded
=> Дополнительные компоненты
=> Кладовая готовых решений
=> Вклад сообщества в Qt
=> Qt-инструментарий
-----------------------------
Программирование
-----------------------------
=> Общий
=> С/C++
=> Python
=> Алгоритмы
=> Базы данных
=> Разработка игр
-----------------------------
Компиляторы и платформы
-----------------------------
=> Linux
=> Windows
=> Mac OS X
=> Компиляторы
===> Visual C++
-----------------------------
Разное
-----------------------------
=> Новости
===> Новости Qt сообщества
===> Новости IT сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...