Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: запуск приложения
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Общие вопросы
dimetra
Добрый день. Возникла ситуация, открытия сторонней программы, т.е нужено просто открыть ее и вставить некоторые параметры.
каким образом это можно сделать?
silver47
Для этого служит класс QProcess. Подробнее в ассистанте или в примерах. Если там будет непонятно, то могу выложить кусок своей программы, запускаем сторонний процесс и перехватываем его вывод.
dimetra
в общем суть пролемы такая, есть программа privat disk, она создает защифрованный файлик, после ввода пароля она подключает дополнительный диск в системе, где хранятся зашифрованные файлы.
есть очень старючий диск, от которого утерян пароль.
собственно весь алгоритм: открыть прогу, добавить шифрованный фаил, ввести пароль, проверить не появился ли в системе еще один диск, зарыть, и все это в цикле!
ресурсов правда будет жрать.
RazrFalcon
Программа privat disk c графическим интерфейсом, или она консольная?
Вам нужно пароль подобрать? Если да, то конечно это будет долго.
dimetra
Интерфейс графический, подбор пароля по перебору.
Думаю нужно как то кнопки в интефейсе нажимать :)
Пускай будет долго, мне ради спорта, диску 6 лет, просто забыл что на нем лежит, под шумок и qt изучать буду.
silver47
гм... вот как кнопки нажимать не знаю... Читал когда-то про эмуляцию событий мыши\клавиатуры, но не уверен, что это можно вынести за пределы приложения. А для запуска приложения с параметрами подойдет QProcess

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

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

но 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
Цитата
как тут отследить нажалась кнопка или нет?


в общем случае - никак. В частном - нужно знать, какая реакция должна последовать , и по этому косвенному признаку узнавать ) А вот если контролы созданы через WinAPI - там чётко по ID нажатие произойдёт
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.