Название: [Решено] Доступ к элементам чужого окна Отправлено: arhiv6 от Сентябрь 07, 2015, 22:02 Добрый день. Есть сторонняя программа, представляющая из себя форму с несколькими текстовыми полями. Хочется получить доступ к этим текстовым полям (прочитать их) из своей программы (написанной на Qt), чтобы дальше эти данные обрабатывать. Сейчас приходится вручную в каждом поле выделить текст, скопировать и вставить в соответствующее поле на своей форме. Это долго и неудобно, хочется автоматизировать. Вроде можно это сделать с помощью AutoIt, но прежде чем приступить к изучению его basic-подобного языка решил узнать поспрашивать на этом форуме:
Можно ли в Windows получить доступ из своей программы к элементам чужого окна без использования стороннего софта (вроде AutoIt)? Название: Re: Доступ к элементам чужого окна Отправлено: Пантер от Сентябрь 07, 2015, 22:08 Можно. Если Винда, то на ВинАПИ. Погугли про убегающую кнопку Пуск. :)
Название: Re: Доступ к элементам чужого окна Отправлено: Bepec от Сентябрь 07, 2015, 22:21 Это зависит от программы, с которой вы хотите снять информацию. Если там делфячий или виндосовские контролы - да, можно. Если там что то типо Qt - придётся вам извращаться с AutoIt.
Как проверить? Взять утилиту Spy x32 или x64 под вашу систему и потыкать прицелом в текстовые поля. Если они как различные контролы отображаются - значит всё гуд, можно изучать winapi. Если же там везде тыкается главное окно программы, значит всё печально => AutoIt Название: Re: Доступ к элементам чужого окна Отправлено: Пантер от Сентябрь 09, 2015, 08:14 Это зависит от программы, с которой вы хотите снять информацию. Если там делфячий или виндосовские контролы - да, можно. Если там что то типо Qt - придётся вам извращаться с AutoIt. Вроде же в Qt5 контролы имеют свои виндовые хендлы, не?Как проверить? Взять утилиту Spy x32 или x64 под вашу систему и потыкать прицелом в текстовые поля. Если они как различные контролы отображаются - значит всё гуд, можно изучать winapi. Если же там везде тыкается главное окно программы, значит всё печально => AutoIt Название: Re: Доступ к элементам чужого окна Отправлено: Bepec от Сентябрь 09, 2015, 08:17 Хз, надо проверить, но в версиях 4.* данные достать нереально. Всё окно представляет собой фанеру.
PS да и по идее сам механизм рисования делает невозможным использование виндосовских контролов. Надо уточнить. Название: Re: Доступ к элементам чужого окна Отправлено: Пантер от Сентябрь 09, 2015, 08:18 Да, с 4 я согласен, там Кьют сам все рисовал.
Название: Re: Доступ к элементам чужого окна Отправлено: GreatSnake от Сентябрь 09, 2015, 10:58 Вроде же в Qt5 контролы имеют свои виндовые хендлы, не? Откуда такие данные?Вроде как виджеты в Qt5 особенно не переделывались по сравнению с Qt4. Да по идее и не должны были так кардинально измениться. Название: Re: Доступ к элементам чужого окна Отправлено: Пантер от Сентябрь 09, 2015, 11:24 ХЗ. Помню, кто-то говорил мне об этом. Утверждать не буду на 146%.
Название: Re: Доступ к элементам чужого окна Отправлено: GreatSnake от Сентябрь 09, 2015, 11:40 Имхо, огромный плюс Qt в том, что он сам рисует контролы.
Мало того, что это обеспечивает кросс-платформенность, так и обеспечивает тюнинг через QSS. Название: Re: Доступ к элементам чужого окна Отправлено: arhiv6 от Сентябрь 15, 2015, 21:14 Всем спасибо. По совету Пантер реализовал с помощью WinAPI.
Цитировать Вроде же в Qt5 контролы имеют свои виндовые хендлы, не? Нет, по крайней мере через Control Viewer (аналог Spy) никакая информация об элементах формы не доступна. Название: Re: [Решено] Доступ к элементам чужого окна Отправлено: Bepec от Сентябрь 16, 2015, 01:37 А как реализовал то? Если программа не имела хендлов? :)
Название: Re: [Решено] Доступ к элементам чужого окна Отправлено: arhiv6 от Сентябрь 20, 2015, 22:33 Цитировать Нет, по крайней мере через Control Viewer (аналог Spy) никакая информация об элементах формы не доступна. - это я о своей Qt5 программе. Название: Re: Доступ к элементам чужого окна Отправлено: sergek от Сентябрь 21, 2015, 20:41 Всем спасибо. По совету Пантер реализовал с помощью WinAPI. Вопрос об этом. Главное окно, естественно, ловится. А все контролы внутри - нет. Название: Re: [Решено] Доступ к элементам чужого окна Отправлено: Igors от Сентябрь 22, 2015, 10:07 Если нужно автоматизировать copy/paste, то не лучше ли сделать чужому окну нужные move и resize а затем запустить записанный скрипт нажатий мыша и клавы?
|