Russian Qt Forum
Ноябрь 25, 2024, 09:54
Добро пожаловать,
Гость
. Пожалуйста,
войдите
или
зарегистрируйтесь
.
Вам не пришло
письмо с кодом активации?
1 час
1 день
1 неделя
1 месяц
Навсегда
Войти
Начало
Форум
WIKI (Вики)
FAQ
Помощь
Поиск
Войти
Регистрация
Russian Qt Forum
>
Forum
>
Qt
>
Общие вопросы
>
Список объектов Qt с exe файла
Страниц: [
1
]
Вниз
« предыдущая тема
следующая тема »
Печать
Автор
Тема: Список объектов Qt с exe файла (Прочитано 7438 раз)
developer
Гость
Список объектов Qt с exe файла
«
:
Сентябрь 26, 2008, 10:17 »
Здравствуйте, каким способом можно получить список всех объектов Qt, из exe файла(exe естественно написан на Qt). Точнее, как получить доступ к припустим кнопке, и изменить ее надпись.
Записан
kirill
Гость
Re: Список объектов Qt с exe файла
«
Ответ #1 :
Сентябрь 26, 2008, 10:31 »
Если посмотреть на qt exe через Spy++ то видно что все окна в т.ч. кнопки имеют класс "QWidget".
Поэтому ищи все окна c таким классом. Ну а кнопку ищи по ее тексту.
Записан
developer
Гость
Re: Список объектов Qt с exe файла
«
Ответ #2 :
Сентябрь 26, 2008, 11:50 »
Ок, а как сделать ето программно, что надо использовать, какие функции?. Можно ли ето сделать с помощью библиотеки Qt?
Записан
Tonal
Гость
Re: Список объектов Qt с exe файла
«
Ответ #3 :
Сентябрь 26, 2008, 18:39 »
Если программа слинкована динамически, то всё довольно просто:
Берёшь ту же версию Qt, тот же компилятор, пишешь собираешь dll-ку, которую внедряешь в интересующую прогу.
У а в этой dll-ке уже перебираешь все объекты в проге. Или что-нибудь ещё с ними делаешь.
Записан
kirill
Гость
Re: Список объектов Qt с exe файла
«
Ответ #4 :
Сентябрь 29, 2008, 05:46 »
Можешь заморочиться как Tonal пишет. Можешь чисто винапишными функциями.
HWND FindWindow(
LPCTSTR lpClassName,
LPCTSTR lpWindowName
);
BOOL SetWindowText(
HWND hWnd,
LPCTSTR lpString
);
Записан
Tonal
Гость
Re: Список объектов Qt с exe файла
«
Ответ #5 :
Сентябрь 29, 2008, 12:44 »
Можно, но Qt сама рисует кнопки, метки (label), редакторы и т.д. Т.е. на сложный диалог 1 виндовое окно.
И управлять им получится только на уровне закрыть/переместить/установить заголовок.
Правда можно всякими SendKeys-ами выкрутиться.
«
Последнее редактирование: Сентябрь 29, 2008, 12:47 от Tonal
»
Записан
developer
Гость
Re: Список объектов Qt с exe файла
«
Ответ #6 :
Сентябрь 29, 2008, 19:52 »
А что если, с помощью арі-функции FindWindow() найти нужное окно, и етот HWND вернуть кутешной функции find() которая и возвращает указатель на виджет, ну а потом с етим указателем делать что надо - то-есть найти всех его детей, и соответственно иметь доступ к их функциям членам. Выдержит ли такая "теория" вашу критику. Не пробовал такого на практике.
Записан
kirill
Гость
Re: Список объектов Qt с exe файла
«
Ответ #7 :
Сентябрь 30, 2008, 05:48 »
Цитата: developer от Сентябрь 29, 2008, 19:52
А что если, с помощью арі-функции FindWindow() найти нужное окно, и етот HWND вернуть кутешной функции find() которая и возвращает указатель на виджет, ну а потом с етим указателем делать что надо - то-есть найти всех его детей, и соответственно иметь доступ к их функциям членам. Выдержит ли такая "теория" вашу критику. Не пробовал такого на практике.
Можешь даже не пробовать. find ищет только среди своих qwidget. Чтобы она так отработала надо внедряться, как пишет Tonal.
Записан
developer
Гость
Re: Список объектов Qt с exe файла
«
Ответ #8 :
Октябрь 01, 2008, 14:00 »
Цитировать
Если программа слинкована динамически, то всё довольно просто:
Берёшь ту же версию Qt, тот же компилятор, пишешь собираешь dll-ку, которую внедряешь в интересующую прогу.
У а в этой dll-ке уже перебираешь все объекты в проге. Или что-нибудь ещё с ними делаешь. Улыбающийся
Tonal, а можна как-то поподробнее, я даже не знаком с технологией внедрения dll. А тут еще и перебор объектов. Как ето сделать. Очень прошу помочь. Можна мануал.
Записан
Tonal
Гость
Re: Список объектов Qt с exe файла
«
Ответ #9 :
Октябрь 01, 2008, 21:46 »
Набери в гугле "внедрить dll" и читай - инфы море.
Перебор тоже вполне осуществимо - у каждого QObject-а можно запросить детей. Берёшь QApplication и вперёд! :-)
Только версии библиотек и компиляторов обязаны совпадать.
Записан
kirill
Гость
Re: Список объектов Qt с exe файла
«
Ответ #10 :
Октябрь 02, 2008, 05:52 »
Цитата: developer от Октябрь 01, 2008, 14:00
Цитировать
Если программа слинкована динамически, то всё довольно просто:
Берёшь ту же версию Qt, тот же компилятор, пишешь собираешь dll-ку, которую внедряешь в интересующую прогу.
У а в этой dll-ке уже перебираешь все объекты в проге. Или что-нибудь ещё с ними делаешь. Улыбающийся
Tonal, а можна как-то поподробнее, я даже не знаком с технологией внедрения dll. А тут еще и перебор объектов. Как ето сделать. Очень прошу помочь. Можна мануал.
читай Рихтера
Я тебе кинул главу 22 с примером.
Записан
developer
Гость
Re: Список объектов Qt с exe файла
«
Ответ #11 :
Октябрь 02, 2008, 12:11 »
kirill, большое спасибо за твою статью - очень помогла.
Записан
Страниц: [
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 сферы
=> Говорилка
=> Юмор
=> Объявления
Загружается...