crossplatform.ru

Здравствуйте, гость ( Вход | Регистрация )


  Ответ в Делаем как Squish for QT
Введите ваше имя
Подтвердите код

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
 

Опции сообщения
 Включить смайлы?
Иконки сообщения
(Опционально)
                                
                                
  [ Без иконки ]
 


Последние 10 сообщений [ в обратном порядке ]
DmP Дата 6.2.2009, 1:36
 
Цитата(SABROG @ 6.2.2009, 0:44) *
А это случаем не интерфейс для создания приложений для людей с ограниченными способностями?

Я тоже так думал, но не все так просто.
Например, тут дается понять, что через эту технологию можно получить доступ к другому приложению, верней к элементам из которых состоит окно.

Цитата(SABROG @ 6.2.2009, 0:44) *
Кстати, то нибудь может подсказать, как определить тип виджета, например полученного методом?


QObject::objectName() или QObject::metaObject()->className()
alexus_ru Дата 6.2.2009, 1:14
  Вообще то интерфейс. Не совсем уверен, что это можно как то применить.

Кстати, то нибудь может подсказать, как определить тип виджета, например полученного методом?

foreach (QWidget *widget,QApplication::allWidgets())
     {
        
    }


Узнать - кнопка это или QLineEdit например
SABROG Дата 6.2.2009, 0:44
 
Цитата(DmP @ 5.2.2009, 23:24) *
Есть еще вариант Accessibility, возможно это то что нужно.

А это случаем не интерфейс для создания приложений для людей с ограниченными способностями?
DmP Дата 5.2.2009, 23:24
  Есть еще вариант Accessibility, возможно это то что нужно.
DmP Дата 5.2.2009, 16:11
  Погугли на тему "внедрение в чужой процесс".
Потом обычно в каждой программе QApplication расположен в стеке, когда окажешься в том же процессе, что и нужная программа пройдись по стеку и попробуй найти виртуальную таблицу QApplication, ну это как вариант. Сам такого не делал, точно сказать не могу.
alexus_ru Дата 5.2.2009, 15:37
 
Цитата(DmP @ 5.2.2009, 14:46) *
Это к Qt не имеет ни какого отношения.

Не мог бы подсказать, как это можно сделать?
DmP Дата 5.2.2009, 14:46
 
Цитата(alexus_ru @ 5.2.2009, 16:28) *
С техникой QT у меня пока не очень (

Это к Qt не имеет ни какого отношения.
alexus_ru Дата 5.2.2009, 13:28
 
Цитата
Скорее всего так и есть, на демо-ролике показана, что программу запускает сам Squish, потом он по видимому запускает свой поток в загруженном приложении, определяет версию Qt, потом находит QCoreApplication::self - думаю найти эту переменную в памяти не так сложно, так как она потомок QObject. А все остальное дело техники.

С техникой QT у меня пока не очень (
Подскажи, пожалуйста, что необходимо изучить, чтобы знать как "запустить свой поток в загруженном приложении", "найти QCoreApplication::self в памяти"
я не имею никаких догадок на этот счет.
DmP Дата 5.2.2009, 8:18
 
Цитата(Litkevich Yuriy @ 5.2.2009, 0:52) *
Просто догадка. Возможно программа находит указатель qApp (QApplication), а уже через него получает все остальное: QApplication::allWidgets ()

Скорее всего так и есть, на демо-ролике показана, что программу запускает сам Squish, потом он по видимому запускает свой поток в загруженном приложении, определяет версию Qt, потом находит QCoreApplication::self - думаю найти эту переменную в памяти не так сложно, так как она потомок QObject. А все остальное дело техники.
SABROG Дата 5.2.2009, 1:24
  Просто догадка. Возможно программа находит указатель qApp (QApplication), а уже через него получает все остальное: QApplication::allWidgets ()

Вторая догадка состоит в том, что программа вешает хуки на основные функции библиотеки Qt. В результате когда программа обращается к функциям Qt на самом деле проходит через прослойку.

Ну или используется какой-нибудь механизм иньекции, что позволяет обращаться к методам Qt от имени самой программы.
Просмотр темы полностью (откроется в новом окне)
RSS Текстовая версия Сейчас: 28.3.2024, 16:03