Форум программистов, компьютерный форум, киберфорум
Наши страницы

Delphi и WinAPI

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

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

16.07.2015, 09:42. Просмотров 1897. Ответов 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);
Но нет нечего не находит.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
16.07.2015, 09:42
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Управление чужим приложением на Qt5 (Delphi WinAPI):

Управление чужим окном и компонентами - Delphi
Вот моя задача: 1. В программе указываем необходимое N количество копий запускаемой программы. Жмем "Пуск" :) Действия программы: 2....

Управление чужим приложением - C#
Добрый день киберчани! Задался вопросом, можно ли в чужом приложении(игре) нажать игровую кнопку(не послать нажатие , а нажать внутри...

Управление чужим приложением через SendMessage - Visual Basic
Итак, суть проблемы: Есть приложение для работы с реле по USB. Исходники приложения поставщик отказался предоставить, а управлять реле...

Взаимодействие с чужим приложением - C++ Builder
Здравствуйте господа. Нужна ваша помощь по таким вопросам: 1. из своей программы мне нужно читать значения из памяти другого...

Управление чужим окном - C++ Builder
Прошу помочь... Мне нужно взять текст из ЧужоеОкно->Memo задать текст я могу HWND hWnd; hWnd = FindWindow("TForm1", NULL); ...

Несанкционированное управление чужим ПК - Windows XP
Я не прошу никого и ничего конкретно взламывать, просто хочу теоретически немного понять саму схему...поэтому прошу понимающих как-то...

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

Ну и ещё вариант заинжектить свою dll в qt программу. Небольшой опыт имеется но не с qt, а c qt прогой не понимаю что перехватывать (шаблоны qt функций и классы в принципе есть в фрипаскалевском qt5pas и для дельфи этот файлик переписывается минут за 10), отрисовка текста естественно через битмэпы. Если кто надоумит (хотя бы направление поиска как таким методом добраться до контрола и его данных) - буду благодарен.
0
Knomer
1 / 1 / 0
Регистрация: 30.07.2015
Сообщений: 5
26.08.2015, 11:04 #13
Не знаю как ТС, а я решил таки свой вопрос через написание DLL на C++ в Qt Creator-e и инжект в целевое Qt приложение. Сам инжектор на дельфи. Добрался до каждого элемента и это оказалось на удивление несложно, если не считать что две недели заняло получение базовых знаний по плюсам. Но на дельфи аналогичную длл-ку сваять так и не получилось, только кучу времени зря потратил .
1
sashatref
75 / 75 / 27
Регистрация: 21.05.2015
Сообщений: 257
Завершенные тесты: 1
27.08.2015, 08:38 #14
Knomer, то есть внесли модификации в приложение которым необходимо управлять? так автору нужно было совсем не это.
0
Knomer
1 / 1 / 0
Регистрация: 30.07.2015
Сообщений: 5
28.08.2015, 02:30 #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 объектов" то их да - не существует.
0
28.08.2015, 02:30
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.08.2015, 02:30
Привет! Вот еще темы с ответами:

Управление чужим окном и админские права - C++ WinAPI
Писал прогу по управлению чужим окном. Получилось, что на некоторых компах не работают функции SetWindowText и SendMessage. У меня на...

Управление чужим окном (отличие регестрационного имени) - Lazarus
Программа (в папке Ex_10) почему-то управляет окном, созданным в Delphi-7 (папка Delp), но не управляет окном, созданным в Lazarus-е (папка...

Управление приложением - Программирование Android
Доброго дня коллеги. Вопрос у меня назрел весьма интересный. Может кто задумывался об этом, а может кто-то знает уже где искать подобное...

Управление приложением - Java EE
Всем привет! C java профессионально никогда не работал, только собственные хотелки, так что увы, опыта нету, а желание разобраться есть. ...


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

Или воспользуйтесь поиском по форуму:
15
Ответ Создать тему
Опции темы

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