Форум программистов, компьютерный форум CyberForum.ru

Delphi и WinAPI

Войти
Регистрация
Восстановить пароль
 
Рейтинг: Рейтинг темы: голосов - 11, средняя оценка - 4.91
Samsams
2 / 2 / 0
Регистрация: 31.01.2015
Сообщений: 26
#1

Управление чужим приложением на Qt5 - Delphi WinAPI

16.07.2015, 09:42. Просмотров 1657. Ответов 16
Метки нет (Все метки)

Пытаюсь получить HWnd объектов в вайбере и вообще не как не получается, если смотреть по классам то они все имеют один и тот же класс Qt5QWindowIcon.

Нахожу окно:
Код
Hnd:= FindWindow(nil,'Viber +**********');
Потом пытаюсь получить хоть какой то дочерний объект:
Код
function CallBack(h: HWnd; lParam: LPARAM):Bool; stdcall;
var
  NameArr: array [0..255] of Char;
begin
  GetClassName(h,NameArr,255);
  ShowMessage(String(NameArr));
end;

EnumChildWindows(Hnd,@CallBack,0);
Но нет нечего не находит.
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
mss
2330 / 2248 / 250
Регистрация: 24.12.2010
Сообщений: 13,733
16.07.2015, 12:34     Управление чужим приложением на Qt5 #2
Цитата Сообщение от Samsams Посмотреть сообщение
нечего не находит
А по-твоему обязан найти ?
Samsams
2 / 2 / 0
Регистрация: 31.01.2015
Сообщений: 26
16.07.2015, 12:53  [ТС]     Управление чужим приложением на Qt5 #3
Кнопки, Тексовые поля, они же все находятся на этом окне, а значит они дочерние. Я думаю обязан. НА калькуляторе и других все находит. И давай без сарказма, ты вроде понял что я хочу добиться, и начинаешь тут по твоеу не по твоему. Ты лучше сразу скажи как достучаться до других объектов.
mss
2330 / 2248 / 250
Регистрация: 24.12.2010
Сообщений: 13,733
16.07.2015, 14:10     Управление чужим приложением на Qt5 #4
Цитата Сообщение от Samsams Посмотреть сообщение
как достучаться до других объектов
До объектов-окон Windows - никак.
Их там попросту нет, хочешь ли ты этого или не хочешь.
Samsams
2 / 2 / 0
Регистрация: 31.01.2015
Сообщений: 26
16.07.2015, 15:01  [ТС]     Управление чужим приложением на Qt5 #5
У одного знакомого как то софт управляется с WinAPI, тоже на делфи написан. Но он мне не дает код))
sashatref
75 / 75 / 27
Регистрация: 21.05.2015
Сообщений: 257
Завершенные тесты: 1
16.07.2015, 15:05     Управление чужим приложением на Qt5 #6
Samsams, на сколько я понимаю это возможно для программ написанных с использованием vcl, mfc, c# winform, возможно еще на чем-то.
Но для qt такая штука точно не прокатит.
mss
2330 / 2248 / 250
Регистрация: 24.12.2010
Сообщений: 13,733
16.07.2015, 15:41     Управление чужим приложением на Qt5 #7
Цитата Сообщение от Samsams Посмотреть сообщение
У одного знакомого как то софт управляется с WinAPI
Ну управляется, и что ?
Мало ли какие интерфейсы управления торчат из Qt наружу)
Это же вовсе не означает что внутри контейнерного окна Qt создает другие дочерние окна..
Samsams
2 / 2 / 0
Регистрация: 31.01.2015
Сообщений: 26
16.07.2015, 18:38  [ТС]     Управление чужим приложением на Qt5 #8
Подскажи плиз, как бы ты сделал, если есть задача программно получить доступ к объектам?
sashatref
75 / 75 / 27
Регистрация: 21.05.2015
Сообщений: 257
Завершенные тесты: 1
16.07.2015, 22:05     Управление чужим приложением на Qt5 #9
Samsams, каким объектам?
без модификации qt'шной программы, скорее всего никак не сможешь управлять той программой
Samsams
2 / 2 / 0
Регистрация: 31.01.2015
Сообщений: 26
17.07.2015, 10:04  [ТС]     Управление чужим приложением на Qt5 #10
Тогда подскажи ресурсы где почитать про QT ну и модификации, желательно на русском, если не затруднит)
sashatref
75 / 75 / 27
Регистрация: 21.05.2015
Сообщений: 257
Завершенные тесты: 1
17.07.2015, 10:13     Управление чужим приложением на Qt5 #11
Samsams, под словом модификация я подразумевал, что нужно взять исходники qt программы, добавить какое-то api и тогда пусть управляет кто хочет.
Knomer
0 / 0 / 0
Регистрация: 30.07.2015
Сообщений: 5
30.07.2015, 16:49     Управление чужим приложением на Qt5 #12
Тоже интересует, у меня не вайбер, но тоже QT5 и Qt5QWindowIcon. Проблема в том что вообще вначале не понятно куда копать. Ппц. Делаю так.
1. RanorexStudio и встроенный RanorexSpy, 30 дней триал более чем. Виден каждый элемент со свойствами и иерархия.
2. Поэтому предполагаю что у моего приложения не выключен MSAA (Microsoft Active Accessibility) и здесь уже что-то гуглится.

Ну и ещё вариант заинжектить свою dll в qt программу. Небольшой опыт имеется но не с qt, а c qt прогой не понимаю что перехватывать (шаблоны qt функций и классы в принципе есть в фрипаскалевском qt5pas и для дельфи этот файлик переписывается минут за 10), отрисовка текста естественно через битмэпы. Если кто надоумит (хотя бы направление поиска как таким методом добраться до контрола и его данных) - буду благодарен.
Knomer
0 / 0 / 0
Регистрация: 30.07.2015
Сообщений: 5
26.08.2015, 11:04     Управление чужим приложением на Qt5 #13
Не знаю как ТС, а я решил таки свой вопрос через написание DLL на C++ в Qt Creator-e и инжект в целевое Qt приложение. Сам инжектор на дельфи. Добрался до каждого элемента и это оказалось на удивление несложно, если не считать что две недели заняло получение базовых знаний по плюсам. Но на дельфи аналогичную длл-ку сваять так и не получилось, только кучу времени зря потратил .
sashatref
75 / 75 / 27
Регистрация: 21.05.2015
Сообщений: 257
Завершенные тесты: 1
27.08.2015, 08:38     Управление чужим приложением на Qt5 #14
Knomer, то есть внесли модификации в приложение которым необходимо управлять? так автору нужно было совсем не это.
Knomer
0 / 0 / 0
Регистрация: 30.07.2015
Сообщений: 5
28.08.2015, 02:30     Управление чужим приложением на Qt5 #15
Нет. Не вносил модификации. А сделал следующее, написал на Qt dll-ку и внутри её:
1. получил указатель на родительский объект QApplication
2. получил список всех дочерних элементов со всеми их данными

то бишь в обычном приложении дочерние окна ищутся через EnumChildWindows, а в Qt-ешном как-то так:
C++
1
QWidgetList wdg_list = app->allWidgets()
и дальше например можно получить текст с кнопки
C++
1
2
3
4
5
6
7
8
    QString str_class_name;
    for (int i = 0; i < wdg_list.count(); i++){
        str_class_name = wdg_list[i]->metaObject()->className();
        if (str_class_name == "QPushButton"){
            QPushButton * btn = qobject_cast<QPushButton *>(wdg_list[i]);
            qDebug() << "text = " << btn->text(); 
        }
     }
данные смотрю в Dbgview через qDebug (qDebug - аналог OutputDebugString но не надо париться с приведением типов)

Длл-ка инжектирована в целевое приложение, это не модификация а вполне обычное дело тк надо в адресном пространстве отработать чтобы получить результат. То бишь всё чётко совпадает с тем что нужно было автору, но если насчёт "HWnd объектов" то их да - не существует.
_kadr_
0 / 0 / 0
Регистрация: 08.10.2015
Сообщений: 1
08.10.2015, 09:20     Управление чужим приложением на Qt5 #16
Knomer,
Подскажи плз как получил объект приложения в dll?
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
13.08.2016, 15:30     Управление чужим приложением на Qt5
Еще ссылки по теме:
C++ WinAPI Управление чужим окном и админские права
Управление чужим окном (отличие регестрационного имени) Lazarus
Java EE Управление приложением
Управление приложением Android
Управление приложением на Flash C# .NET 4.x

Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
s3rf
0 / 0 / 0
Регистрация: 24.06.2015
Сообщений: 6
13.08.2016, 15:30     Управление чужим приложением на Qt5 #17
Подскажите пожалуйста если можно пример dll . У меня не хватает знаний в qt , при инджекте длл написанной на делфи у меня запускается целевая функция и вылазит сообщение. то есть все норм... а при инжекте дллки на qte что то не получается ничего. dll подгружается а никаких функций не выполняется. если можно выложите пример када любой dll которая бы открывала окошко или любое другое действие выполняла после инджекта. или прошу подсказать каким образом выполнить функцию из подгруженной ddl ?
Yandex
Объявления
13.08.2016, 15:30     Управление чужим приложением на Qt5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2017, vBulletin Solutions, Inc.
Рейтинг@Mail.ru