URL: https://www.opennet.ru/cgi-bin/openforum/vsluhboard.cgi
Форум: vsluhforumID9
Нить номер: 9244
[ Назад ]

Исходное сообщение
"Управление графическим интерфейсом другого приложения"

Отправлено saker , 23-Сен-11 12:12 
Собственно задача следующая:
Существует два приложения, использующих графический интерфейс. Одно написано на Python c использованием wxWidgets, второе на С++ и Qt. Существует ли возможность управлять графическим интерфейсом этих двух приложений, из третьего, т.е. имитировать нажатие пользователя на различные кнопки, вводить текст в текстовые поля и т.д.Если существует то хотелось бы понять как. Пробовал использовать QDesktopWidget для получения указателя на главное окно одного из приложений:

#include <QtGui>
#include <QApplication>

int main(int argc, char *argv[])
{
    QApplication a(argc, argv);
    QDesktopWidget* deskt=a.desktop();
    QList<QWidget*> list=deskt->findChildren<QWidget *>();
    qDebug()<<list;
    qDebug()<<deskt->find(8322895);
    return 0;
}
Где число 8322895 реальный winId одного из приложений, полученный с помощью QWidget::winId () const
В результате в консоли пустой список и нулевой указатель, т.е. ничего не получилось.


Содержание

Сообщения в этом обсуждении
"Управление графическим интерфейсом другого приложения"
Отправлено gpl77 , 23-Сен-11 18:54 
> Собственно задача следующая:
> Существует два приложения, использующих графический интерфейс. Одно написано на Python
> c использованием wxWidgets, второе на С++ и Qt. Существует ли возможность
> управлять графическим интерфейсом этих двух приложений, из третьего, т.е. имитировать
> нажатие пользователя на различные кнопки, вводить текст в текстовые поля и
> т.д.

можно. В XLib есть XSendEvent.
получаете список окошек, выбираете свое и пуляете туда что угодно.
как сделать через Qt - не знаю.



"Управление графическим интерфейсом другого приложения"
Отправлено StreSS , 24-Сен-11 15:07 
Через Qt тяжело и долго. Как и сказал предыдущий оратор Xlib (посмотри код xwininfo), для поиска. Для отправки сообщений XSendEvent (кажется).

"Управление графическим интерфейсом другого приложения"
Отправлено saker , 26-Сен-11 11:44 
> Через Qt тяжело и долго. Как и сказал предыдущий оратор Xlib (посмотри
> код xwininfo), для поиска. Для отправки сообщений XSendEvent (кажется).

Большое спасибо откликнувшимся. Реализовал через Xlib.