Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: не стартует процесс в Qt5
Форум на CrossPlatform.RU > Библиотеки > Qt > Qt Ввод/Вывод, Сеть. Межпроцессное взаимодействие
tradmir@mail.ru
Уважаемые знатоки!

хочу запустить из программы две команды командного окна и получить результат. В qt4 все работает, а qt5 не стартует второй процесс.
процесс 1 запускает команду:
process1.start("myecho.exe сабака");
если процесс1 стартовал и/или выполняется, то ожидается финиш процесса 1 и вызвается процесс 2
if (process1.state()==QProcess::Starting || process1.state()==QProcess::Running){
if (process1.waitForFinished()){

process2.start(cmd2);
далее проверяется состояние процесса 2, оказывается, состояние процесса есть Not running

Сборка собранная под Qt5 в операционной системе Windows XP(32 bit) работает на Windows XP(32 bit),
та же сборка собранная под Qt5 в операционной системе Windows XP(32 bit) не работает на Windows 7.

Подскажите в чем проблема?

С уважением,
Радмир
Алексей1153
tradmir@mail.ru,
попробуй сначала дождаться, когда первый процесс запустится

bool QProcess::waitForStarted(int msecs)
tradmir@mail.ru
Цитата(Алексей1153 @ 21.12.2017, 8:39) *
tradmir@mail.ru,
попробуй сначала дождаться, когда первый процесс запустится

bool QProcess::waitForStarted(int msecs)

Программа запускает первую команду, дожидается старта или состояния "исполняется" ,
дожидается состояния финишировала и стартует процесс2.
Процесс2 не стартует.

Похоже нужно ставить Qt5 полностью на Windows 7, хотел обойтись только пакетом зависимых dll.
Поставлю, результат сообщу.

Радмир
Алексей1153
tradmir@mail.ru, обычно копирования dll достаточно, не требуется установка всего Qt. Там что-то другое
tradmir@mail.ru
Цитата(Алексей1153 @ 23.12.2017, 10:14) *
tradmir@mail.ru, обычно копирования dll достаточно, не требуется установка всего Qt. Там что-то другое


Да нет, просто малоизвестная фича от Qt, а именно:
Под Windows XP процесс запускается, если вы укажете рабочую директорию, типа process1.setWorkingDirectory("c:/..."),
а под Windows 7 нужно больше: QDir::setCurrent("c:/...").

Как обычно, чем больше знаешь, тем больше граница между тем, что знаешь и не знаешь.

Вопрос закрыт,
всем спасибо.

С уважением,
Радмир
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Форум IP.Board © 2001-2024 IPS, Inc.