Запускайте консольные приложения, не создавая новое мерцание окна консоли на экране (C ++, Windows) - PullRequest
2 голосов
/ 15 июля 2010

Я пишу приложение для Windows, и мне нужно запустить из него несколько консольных приложений и получить их вывод.Я попробовал два разных подхода:

1) Использование _popen (команда, "rt") 2) Создание дочернего процесса с перенаправленным выводом (CreateProcess (), CreatePipe ())

Они оба работаютно во время выполнения какой-то команды создается новое консольное окно, и оно очень неприятное и безобразное.Есть ли способ выполнить команды в фоновом режиме, не открывая новую консоль?

Ответы [ 2 ]

3 голосов
/ 15 июля 2010

Вы можете попробовать передать флаг CREATE_NO_WINDOW или DETACHED_PROCESS на CreateProcess.

3 голосов
/ 15 июля 2010

Вы можете использовать libexecstream .

Позволяет запускать консольные программы и читать их вывод в потоке.

Как говорится на сайте:

  • Работает в Linux и Windows
  • Использует темы
  • Не зависит ни от какой другой нестандартной библиотеки
  • Распространяется только в виде исходного кода, требует, чтобы вы скомпилировали и связали один файл с вашей программой
  • Имеет лицензию в стиле BSD

Могу добавить, что я успешно использовал его в недавнем проекте и что не появилось позорное окно консоли.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...