Добрый день. Возникла ситуация, открытия сторонней программы, т.е нужено просто открыть ее и вставить некоторые параметры.
каким образом это можно сделать?
Для этого служит класс QProcess. Подробнее в ассистанте или в примерах. Если там будет непонятно, то могу выложить кусок своей программы, запускаем сторонний процесс и перехватываем его вывод.
в общем суть пролемы такая, есть программа privat disk, она создает защифрованный файлик, после ввода пароля она подключает дополнительный диск в системе, где хранятся зашифрованные файлы.
есть очень старючий диск, от которого утерян пароль.
собственно весь алгоритм: открыть прогу, добавить шифрованный фаил, ввести пароль, проверить не появился ли в системе еще один диск, зарыть, и все это в цикле!
ресурсов правда будет жрать.
Программа privat disk c графическим интерфейсом, или она консольная?
Вам нужно пароль подобрать? Если да, то конечно это будет долго.
Интерфейс графический, подбор пароля по перебору.
Думаю нужно как то кнопки в интефейсе нажимать
Пускай будет долго, мне ради спорта, диску 6 лет, просто забыл что на нем лежит, под шумок и qt изучать буду.
гм... вот как кнопки нажимать не знаю... Читал когда-то про эмуляцию событий мыши\клавиатуры, но не уверен, что это можно вынести за пределы приложения. А для запуска приложения с параметрами подойдет QProcess
программа, где вводится пароль, на чём написана ? Палятся ли контролы Spy++ ? Если да - это ГОРАЗДО проще, если нет, то придётся жёстко задать координаты, да и обратная связь похуже будет (мягко говоря). А всё остальное - реализуется относительно несложно (в винде, по крайней мере, и не на Qt, на WinAPI).
ещё абсолютно не исключено, что программа умеет принимать параметры из командной строки. Попробуй вывести справку
нашел пример нажатия кнопок но вот только чего то мало получается с ними...
но 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);
Форум Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)