Я расстраиваюсь.У меня есть приложение Windows GUI, которое вручную открывает консоль.Вызов AllocConsole
и перенаправление stdin
, stdout
и stderr
работают безупречно.Я могу напечатать любой ввод и любой вывод, и это работает хорошо.Проблема в том, что когда я вызываю _wsystem
для запуска команды CMD, вывод - это мусор.Персонажи перемешаны.CMD не полностью интегрируется с консолью.
Я перенаправляю вывод на консоль следующим образом:
consoleHandleOut = GetStdHandle(STD_OUTPUT_HANDLE);
if (consoleHandleOut != INVALID_HANDLE_VALUE) {
//freopen("CONOUT$", "w", stdout);
freopen_s(&newStream, "CONOUT$", "w", stdout);
setvbuf(stdout, NULL, _IONBF, 0);
SetStdHandle(STD_OUTPUT_HANDLE,
(HANDLE)_get_osfhandle(_fileno(newStream)));
} else {
return FALSE;
}
Я делаю это для каждой ручки.