crossplatform.ru

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


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

Введите в поле код из 6 символов, отображенных в виде изображения. Если вы не можете прочитать код с изображения, нажмите на изображение для генерации нового кода.
Теги
Выровнять по центру
Ссылка на тему
Ссылка на сообщение
Скрытый текст
Сокращение
Код с подсветкой
Offtopic
 
Удалить форматирование
Спец. элементы
Шрифт
Размер
 
Цвет шрифта
 
Отменить ввод
Вернуть ввод
Полужирный
Курсив
Подчеркнутый
 
 
Смайлики
Вставить изображение
Вставить адрес электронной почты
Цитата
Код
Раскрывающийся текст
 
Увеличить отступ
По левому краю
По центру
По правому краю
Вставить список
Вставить список

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


Последние 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 Рейтинг@Mail.ru Текстовая версия Сейчас: 13.7.2025, 12:32