Версия для печати темы

Нажмите сюда для просмотра этой темы в обычном формате

Форум на CrossPlatform.RU _ Qt Общие вопросы _ запуск приложения

Автор: dimetra 27.9.2011, 10:06

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

Автор: silver47 27.9.2011, 15:28

Для этого служит класс QProcess. Подробнее в ассистанте или в примерах. Если там будет непонятно, то могу выложить кусок своей программы, запускаем сторонний процесс и перехватываем его вывод.

Автор: dimetra 27.9.2011, 20:32

в общем суть пролемы такая, есть программа privat disk, она создает защифрованный файлик, после ввода пароля она подключает дополнительный диск в системе, где хранятся зашифрованные файлы.
есть очень старючий диск, от которого утерян пароль.
собственно весь алгоритм: открыть прогу, добавить шифрованный фаил, ввести пароль, проверить не появился ли в системе еще один диск, зарыть, и все это в цикле!
ресурсов правда будет жрать.

Автор: RazrFalcon 27.9.2011, 21:22

Программа privat disk c графическим интерфейсом, или она консольная?
Вам нужно пароль подобрать? Если да, то конечно это будет долго.

Автор: dimetra 27.9.2011, 21:31

Интерфейс графический, подбор пароля по перебору.
Думаю нужно как то кнопки в интефейсе нажимать :)
Пускай будет долго, мне ради спорта, диску 6 лет, просто забыл что на нем лежит, под шумок и qt изучать буду.

Автор: silver47 28.9.2011, 5:28

гм... вот как кнопки нажимать не знаю... Читал когда-то про эмуляцию событий мыши\клавиатуры, но не уверен, что это можно вынести за пределы приложения. А для запуска приложения с параметрами подойдет QProcess


Автор: Алексей1153 28.9.2011, 8:39

программа, где вводится пароль, на чём написана ? Палятся ли контролы Spy++ ? Если да - это ГОРАЗДО проще, если нет, то придётся жёстко задать координаты, да и обратная связь похуже будет (мягко говоря). А всё остальное - реализуется относительно несложно (в винде, по крайней мере, и не на Qt, на WinAPI).

ещё абсолютно не исключено, что программа умеет принимать параметры из командной строки. Попробуй вывести справку

Автор: dimetra 5.10.2011, 22:18

нашел пример нажатия кнопок но вот только чего то мало получается с ними...

но api
#ifdef Q_WS_WIN
#include <w32api.h>
#include <windows.h>
#endif

..........

#ifdef Q_WS_WIN
SetCursorPos(pos.x(), pos.y());
Sleep(1);
mouse_event(MOUSEEVENTF_MOVE, 0, 0, 0, GetMessageExtraInfo());
Sleep(1);
mouse_event(MOUSEEVENTF_LEFTDOWN, 0, 0, 0, GetMessageExtraInfo());
Sleep(1);
mouse_event(MOUSEEVENTF_LEFTUP, 0, 0, 0, GetMessageExtraInfo());
#endif

Q_WS_WIN - это что то консольное.
как тут отследить нажалась кнопка или нет?

есть же другой пример, но с ним проблема т.к он создает форму и в ней уже клацает кнопкой, а у меня сторонее приложение запускается:
QMouseEvent *pressedLeftMouseButton = new QMouseEvent(QEvent::MouseButtonPress,
QPoint(100,0),
Qt ::LeftButton,
Qt ::LeftButton,
Qt ::NoModifier);

Автор: Алексей1153 6.10.2011, 0:44

Цитата
как тут отследить нажалась кнопка или нет?


в общем случае - никак. В частном - нужно знать, какая реакция должна последовать , и по этому косвенному признаку узнавать ) А вот если контролы созданы через WinAPI - там чётко по ID нажатие произойдёт

Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)