Russian Qt Forum
Ноябрь 24, 2024, 01:30 *
Добро пожаловать, Гость. Пожалуйста, войдите или зарегистрируйтесь.
Вам не пришло письмо с кодом активации?

Войти
 
  Начало   Форум  WIKI (Вики)FAQ Помощь Поиск Войти Регистрация  

Страниц: [1] 2   Вниз
  Печать  
Автор Тема: [РЕШЕНО] QProcess Press any key to continue....  (Прочитано 8756 раз)
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« : Июнь 24, 2016, 17:03 »

Привет, друзья!
Есть 5 программ под dos. Все они в конце своей работы выдают Press any key to continue....
Я их цепляю через QProcess и передаю в поток '\n'. 4 из них отрабатывают как и ожидается, а вот одна как-то по хитрому написана... Исходников этих программ нет. Есть идеи, как нажать этот any key?
« Последнее редактирование: Июнь 28, 2016, 12:29 от __Heaven__ » Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #1 : Июнь 24, 2016, 17:34 »

Ещё информация.
Открыл хекс редактором все эти файлы. Там вручную выводится echo on press any key ....
Записан
Bepec
Гость
« Ответ #2 : Июнь 24, 2016, 19:23 »

"\r\n" передавать пробовали? Веселый
Ну или как вариант он ожидает символ, а не просто нажатие Улыбающийся
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #3 : Июнь 25, 2016, 10:44 »

Пробовал символы передавать и сейчас попробовал \r\n. Не помоает.
Записан
Bepec
Гость
« Ответ #4 : Июнь 25, 2016, 11:54 »

Хз в общем, но тут мб много ещё вариантов Веселый Надо пробовать, смотреть.
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #5 : Июнь 25, 2016, 12:09 »

Написать программу под DOS которая зашлет символ в буфер клавы. Или сначала отладчиком посмотреть какое прерывание используется для ожидания ввода
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #6 : Июнь 25, 2016, 12:52 »

Написать программу под DOS которая зашлет символ в буфер клавы.
А как эту программу выполнить в том же окружении с исполняющейся DOS-программой?
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #7 : Июнь 25, 2016, 23:25 »

У меня пока одно решение - терминировать по истечению времени.... Как мне может помочь знание используемого прерывания? 
Записан
Igors
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 11445


Просмотр профиля
« Ответ #8 : Июнь 26, 2016, 04:56 »

У меня пока одно решение - терминировать по истечению времени.... Как мне может помочь знание используемого прерывания? 
Ну хотя бы будете знать почему не срабатывает посылка \n. Еще варианты

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

Сообщений: 4350



Просмотр профиля
« Ответ #9 : Июнь 26, 2016, 05:42 »

У меня пока одно решение - терминировать по истечению времени....
А сообщение "Press... " эта программа пишет в поток? Вы его в хосте получаете?
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #10 : Июнь 26, 2016, 21:32 »

Old,
Код
C++ (Qt)
       connect(&process, &QProcess::readyReadStandardOutput, [&](){qDebug() << process.readAllStandardOutput();});
       connect(&process, &QProcess::readyReadStandardError, [&](){qDebug() << process.readAllStandardError();});
 
Во всех процессах кроме проблемного отлавливает press. Хотя, как я писал выше, он, вроде как через системный echo это должен делать.
В общем, ответ нет, не  пишет.
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #11 : Июнь 26, 2016, 21:51 »

В общем, ответ нет, не  пишет.
А что она вообще делает?
Результаты ее работы где-то сохраняются?
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #12 : Июнь 26, 2016, 22:06 »

Да. Даже известно количество строк записи
Записан
Old
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 4350



Просмотр профиля
« Ответ #13 : Июнь 26, 2016, 22:09 »

Да. Даже известно количество строк записи
Тогда проще отслеживать, когда она все вернет и чпокать процесс.
Записан
__Heaven__
Джедай : наставник для всех
*******
Offline Offline

Сообщений: 2130



Просмотр профиля
« Ответ #14 : Июнь 28, 2016, 12:29 »

Тогда проще отслеживать, когда она все вернет и чпокать процесс.
Так и сделал. Спасибо.
Записан
Страниц: [1] 2   Вверх
  Печать  
 
Перейти в:  


Страница сгенерирована за 0.228 секунд. Запросов: 22.