Russian Qt Forum

Qt => Общие вопросы => Тема начата: __Heaven__ от Июнь 24, 2016, 17:03



Название: [РЕШЕНО] QProcess Press any key to continue....
Отправлено: __Heaven__ от Июнь 24, 2016, 17:03
Привет, друзья!
Есть 5 программ под dos. Все они в конце своей работы выдают Press any key to continue....
Я их цепляю через QProcess и передаю в поток '\n'. 4 из них отрабатывают как и ожидается, а вот одна как-то по хитрому написана... Исходников этих программ нет. Есть идеи, как нажать этот any key?


Название: Re: QProcess Press any key to continue....
Отправлено: __Heaven__ от Июнь 24, 2016, 17:34
Ещё информация.
Открыл хекс редактором все эти файлы. Там вручную выводится echo on press any key ....


Название: Re: QProcess Press any key to continue....
Отправлено: Bepec от Июнь 24, 2016, 19:23
"\r\n" передавать пробовали? :D
Ну или как вариант он ожидает символ, а не просто нажатие :)


Название: Re: QProcess Press any key to continue....
Отправлено: __Heaven__ от Июнь 25, 2016, 10:44
Пробовал символы передавать и сейчас попробовал \r\n. Не помоает.


Название: Re: QProcess Press any key to continue....
Отправлено: Bepec от Июнь 25, 2016, 11:54
Хз в общем, но тут мб много ещё вариантов :D Надо пробовать, смотреть.


Название: Re: QProcess Press any key to continue....
Отправлено: Igors от Июнь 25, 2016, 12:09
Написать программу под DOS которая зашлет символ в буфер клавы. Или сначала отладчиком посмотреть какое прерывание используется для ожидания ввода


Название: Re: QProcess Press any key to continue....
Отправлено: Old от Июнь 25, 2016, 12:52
Написать программу под DOS которая зашлет символ в буфер клавы.
А как эту программу выполнить в том же окружении с исполняющейся DOS-программой?


Название: Re: QProcess Press any key to continue....
Отправлено: __Heaven__ от Июнь 25, 2016, 23:25
У меня пока одно решение - терминировать по истечению времени.... Как мне может помочь знание используемого прерывания? 


Название: Re: QProcess Press any key to continue....
Отправлено: Igors от Июнь 26, 2016, 04:56
У меня пока одно решение - терминировать по истечению времени.... Как мне может помочь знание используемого прерывания? 
Ну хотя бы будете знать почему не срабатывает посылка \n. Еще варианты

- обойти вызов этой ф-ции (подправить код в отладчике)
- эмулировать нажатие средствами OC из-под которого запускается приложение дос


Название: Re: QProcess Press any key to continue....
Отправлено: Old от Июнь 26, 2016, 05:42
У меня пока одно решение - терминировать по истечению времени....
А сообщение "Press... " эта программа пишет в поток? Вы его в хосте получаете?


Название: Re: QProcess Press any key to continue....
Отправлено: __Heaven__ от Июнь 26, 2016, 21:32
Old,
Код
C++ (Qt)
       connect(&process, &QProcess::readyReadStandardOutput, [&](){qDebug() << process.readAllStandardOutput();});
       connect(&process, &QProcess::readyReadStandardError, [&](){qDebug() << process.readAllStandardError();});
 
Во всех процессах кроме проблемного отлавливает press. Хотя, как я писал выше, он, вроде как через системный echo это должен делать.
В общем, ответ нет, не  пишет.


Название: Re: QProcess Press any key to continue....
Отправлено: Old от Июнь 26, 2016, 21:51
В общем, ответ нет, не  пишет.
А что она вообще делает?
Результаты ее работы где-то сохраняются?


Название: Re: QProcess Press any key to continue....
Отправлено: __Heaven__ от Июнь 26, 2016, 22:06
Да. Даже известно количество строк записи


Название: Re: QProcess Press any key to continue....
Отправлено: Old от Июнь 26, 2016, 22:09
Да. Даже известно количество строк записи
Тогда проще отслеживать, когда она все вернет и чпокать процесс.


Название: Re: QProcess Press any key to continue....
Отправлено: __Heaven__ от Июнь 28, 2016, 12:29
Тогда проще отслеживать, когда она все вернет и чпокать процесс.
Так и сделал. Спасибо.


Название: Re: [РЕШЕНО] QProcess Press any key to continue....
Отправлено: __Heaven__ от Июнь 28, 2016, 16:37
Что-то kill() не работает. Соответственно деструктор пишет
Цитировать
QProcess: Destroyed while process ("D:\\QtProjects\\NodularCast\\3rdparty\\adi_ret_aust\\RET_AUST.exe") is still running.


Название: Re: [РЕШЕНО] QProcess Press any key to continue....
Отправлено: Old от Июнь 28, 2016, 16:46
Что-то kill() не работает.
Это на винфак. :)


Название: Re: [РЕШЕНО] QProcess Press any key to continue....
Отправлено: __Heaven__ от Июнь 28, 2016, 17:13
А я что-то подумал, что и хрен то с ним :) При закрытии родителя дети убиваются. Пускай там их хоть сотни плодятся.