2016-02-18 6 views
0

Я запускаю программу на C++; однако, к сожалению, ему нужно вызвать внешнюю программу в Windows, чтобы получить некоторые результаты. Проблема в том, что внешняя программа имеет часть, которая запрашивает у пользователя «push enter to exit». Это делает невозможным автономную работу моей программы, потому что она блокирует всю программу, пока не будет нажата клавиша. Каждый ход, мне нужно нажать Enter, чтобы выйти из этой программы. Есть ли способ сделать это возможным?C++ Внешняя двоичная система блокирует основную программу

Примечание: внешняя программа является exe, поэтому я не могу ее трогать.

+0

Назовите его неблокирующим (то есть, из другого потока). –

+0

Это зависит от того, как вы вызываете внешнюю программу. Какой API? – Ajay

+0

Я использую систему («aaaa.exe»). Я думаю, что работа из разных потоков не решает проблему, так как основному потоку нужен этот вывод для правильной работы. – cagatayodabasi

ответ

1

Вам нужно будет отправить это «ввести» во внешнюю программу. @Joachim прокомментировал, что _popen работает для захвата вывода, но также позволяет отправлять входные данные в вашу внешнюю программу - например, \n. (Может понадобиться \r\n, эксперимент).

0



Не самый лучший способ ... но ...

Вы можете попробовать запустить исполняемый файл с CreateProcess() , а затем использовать FindWindow() API, чтобы получить окно ехе и использовать SendMessage(), чтобы отправить его клавишу ввода ...

Другой НЕ так рекомендуемый вариант является вызов TerminateProcess() с ручкой из CreateProcess() PROCESS_INFORMATION структуры после некоторого времени ожидания ...

Надеюсь, это поможет ...

Смежные вопросы