Я хочу выполнить определенный пакетный файл и перенаправить его вывод консоли на текстовый элемент управления в Visual C ++ или перенаправить вывод консоли одновременно с отображением логов / эхо.
По сути, вы должны выполнить процесс запуска, чтобы записать в канал и прочитать выходные данные этого канала.
[EDIT] Я знаю, как это делает SciTE (вы можете взглянуть на источник: win32 / SciTEWin.cxx, функция ExecuteOne), я искал немного более общий способ, нашел Как порождать консольные процессы с перенаправленные стандартные дескрипторы от самой Microsoft. Например, если вы ищете ключевое слово CreatePipe PeekNamedPipe CreateProcess , вы можете найти другие примеры.
Другой вариант - использовать Boost.Process (Boost.Process не является (пока) официальной библиотекой Boost C ++. Ее необходимо загружать и устанавливать отдельно) .
Пример « Child.4 - Чтение от дочернего элемента с использованием асинхронного ввода-вывода » показывает, как перенаправить выходные данные дочернего процесса в поток C ++ (и позднее получить доступ к содержимому).
Пример " Child.4 - Чтение от ребенка с использованием асинхронного ввода-вывода " показывает, как использовать Boost.Process вместе с Boost.Asio для доступа к дочернему вводу-выводу асинхронный .
Преимущества этого метода в том, что Boost.Process поддерживает Windows API и POSIX API.
Если элегантность не является приоритетом, то действительно простым решением может быть перенаправление вывода в файл, а затем чтение содержимого файла.