Russian Qt Forum

Qt => Общие вопросы => Тема начата: Cool Smile от Декабрь 22, 2009, 09:52



Название: Доступ в стороннее QT приложение
Отправлено: Cool Smile от Декабрь 22, 2009, 09:52
Есть у меня сторонее приложение, видимо написанное в QT (во всяком случае в качестве базового класса выдается QWidget). И есть на нем элемент, я подозреваю textBrowser.
Вопрос - могу я из своей программы получить доступ (считать текст) из этого элемента?

По сути, все, что у меня есть это хеадер окна.



Название: Re: Доступ в стороннее QT приложение
Отправлено: Пантер от Декабрь 22, 2009, 12:34
Вряд ли.


Название: Re: Доступ в стороннее QT приложение
Отправлено: Cool Smile от Декабрь 22, 2009, 13:36
А можно поподробнее почему? С типовыми виндоусовскими компонентами а-ля StringList и RichEdit особых проблем не возникает, неужели у QT приложения принципиально нельзя запросить хеадер компонента и пообщаться с ним напрямую? :(


Название: Re: Доступ в стороннее QT приложение
Отправлено: Пантер от Декабрь 22, 2009, 17:43
Qt все контролы в окне сама отрисовывает. Думаю, дальше все понятно.


Название: Re: Доступ в стороннее QT приложение
Отправлено: Igors от Декабрь 22, 2009, 17:54
Qt все контролы в окне сама отрисовывает. Думаю, дальше все понятно.
Хммм... а что собственно понятно? :) По-моему дело такое - есть 2 процесса, стало быть у них разные адресные пространства. И непонятно как данные из одного могут быть переданы в другое. Для этого нужно или работать через дескрипторы или shared memory - словом нужна какая-то специальная поддержка, а ее не видно.

А вообще мне нравится вопрос любознательного молодого человека  :)


Название: Re: Доступ в стороннее QT приложение
Отправлено: Пантер от Декабрь 22, 2009, 18:13
Понятно то, что до Кьютового контрола, в отличии от стандартного виндового, нельзя достучаться через винапи.


Название: Re: Доступ в стороннее QT приложение
Отправлено: Igors от Декабрь 22, 2009, 19:46
Понятно то, что до Кьютового контрола, в отличии от стандартного виндового, нельзя достучаться через винапи.
Ну до окон-то можно, да толку все равно немного. Структур данных не получить


Название: Re: Доступ в стороннее QT приложение
Отправлено: Cool Smile от Декабрь 23, 2009, 00:09
Поскольку я новичёк, имею право играть блондинку :) - почему нельзя получить структур данных? Насколько я понял по публикациям идею, QT приложение крутит свою очередь событий, принимая всё родительским окном. Но может алгоритм распределения запросов открытый (все ж кроссплатформенная идея :) ) и притворяясь "папой" можно попросить отдать содержимое чайлд контрола?

>> А вообще мне нравится вопрос любознательного молодого человека 
А давайте обозначим, что "любознательный молодой человек" заинтересован в решении этой задачи? :)
   


Название: Re: Доступ в стороннее QT приложение
Отправлено: Dendy от Декабрь 23, 2009, 01:41
Для начала узнайте точную версию Qt, с которой была собрана программа. Достаньте исходники Qt этой версии. Подключитесь к программе отладчиком и в ассемблерном коде, руководствуясь заголовочниками ищите данные. А если программа собрана с дебажными символами - так вообще песня.


Название: Re: Доступ в стороннее QT приложение
Отправлено: break от Декабрь 23, 2009, 02:23
В старом QtSolutions был такой класс ObjectInspector - я сам не пользовался им но вроде можно было просматривать дерево всех QObject-ов программы со свойствами и дочерними QObject-ами - можно покапать и в эту сторону тоже...

http://qt.nokia.com/products/appdev/add-on-products/catalog/3/Tools/qtobjectinspector/

На самом деле очень хороший солюшен вот бы его на Qt4 тоже перенесли - просьба в баг трекере - что-то никто не голосует...
http://bugreports.qt.nokia.com/browse/QTSOLBUG-57


Название: Re: Доступ в стороннее QT приложение
Отправлено: Igors от Декабрь 23, 2009, 17:53
Поскольку я новичёк, имею право играть блондинку :) - почему нельзя получить структур данных? Насколько я понял по публикациям идею, QT приложение крутит свою очередь событий, принимая всё родительским окном. Но может алгоритм распределения запросов открытый (все ж кроссплатформенная идея :) ) и притворяясь "папой" можно попросить отдать содержимое чайлд контрола?
Ну допустим (хотя я не вижу как) можем как-то управлять контролом, и что с того? Откуда мы знаем в каком окне какой контрол, что он делает и.т.п.? Пробежать по всем QTextEdit и вставить в каждый неприличное слово - вот максимум после долгих усилий. Стоит ли тратить время на примитивные пакости? :)


Название: Re: Доступ в стороннее QT приложение
Отправлено: denka от Декабрь 23, 2009, 23:12
Ну допустим (хотя я не вижу как) можем как-то управлять контролом, и что с того? Откуда мы знаем в каком окне какой контрол, что он делает и.т.п.? Пробежать по всем QTextEdit и вставить в каждый неприличное слово - вот максимум после долгих усилий. Стоит ли тратить время на примитивные пакости? :)
На самом деле это не примитивные пакости. Есть очень не плохая система, написанная на Qt, для создания GUI тестов для Qt приложений, которая использует данный подход.


Название: Re: Доступ в стороннее QT приложение
Отправлено: lit-uriy от Декабрь 24, 2009, 01:03
А вот эта штука не подойдёт - QSpy (http://www.qt-apps.org/content/show.php/QSpy?content=102287)?

П.С. сам не пользовался


Название: Re: Доступ в стороннее QT приложение
Отправлено: break от Декабрь 24, 2009, 04:08
Цитировать
А вот эта штука не подойдёт - QSpy?
Посмотрел какой-то фейк треш не рабочий... к сожалению, уж подкмал как круто было бы - натравил на запущенную Qt программу и отлаживай..
В общем у меня не заработало и беглый взгляд на исходники подталкивает на мысль что скрин на странице QtApps это фотошоп из дизайнера -- короче фейк толкает кто-то...
И видео корявое сбацал только чтобы свой фейк подтвердить - ненавижу таких уродов моральных...


Название: Re: Доступ в стороннее QT приложение
Отправлено: Rcus от Декабрь 24, 2009, 05:01
Цитировать
А вот эта штука не подойдёт - QSpy?
Посмотрел какой-то фейк треш не рабочий... к сожалению, уж подкмал как круто было бы - натравил на запущенную Qt программу и отлаживай..
В общем у меня не заработало и беглый взгляд на исходники подталкивает на мысль что скрин на странице QtApps это фотошоп из дизайнера -- короче фейк толкает кто-то...
И видео корявое сбацал только чтобы свой фейк подтвердить - ненавижу таких уродов моральных...
Хм... а у меня работает, но в описании указано прямо что работает только для Linux (хотя поверхностное изучение исходников показало что работать будет только при динамической линковке при поддержке LD_PRELOAD).


Название: Re: Доступ в стороннее QT приложение
Отправлено: break от Декабрь 24, 2009, 05:48
Цитировать
Хм... а у меня работает, но в описании указано прямо что работает только для Linux (хотя поверхностное изучение исходников показало что работать будет только при динамической линковке при поддержке LD_PRELOAD).

Работает в смысле выводит свойства Qt шной программы любой? - или в смысле просто запускается? у меня то она тоже запускается - но никаких свойств не видать - естественно в линукс пробовал...


Название: Re: Доступ в стороннее QT приложение
Отправлено: Rcus от Декабрь 24, 2009, 06:26
Работает в смысле выводит свойства Qt шной программы любой? - или в смысле просто запускается? у меня то она тоже запускается - но никаких свойств не видать - естественно в линукс пробовал...
Не знаю насчет любой, но я запускал KDE/Qt приложения и все работало.