diff --git a/src/main.cpp b/src/main.cpp index 9355465e..df2b57fb 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -167,18 +167,28 @@ void UnitTests() bool isConsoleConnected = false; void requireConsole() { - #if BOOST_OS_WINDOWS - if (isConsoleConnected) - return; + #if BOOST_OS_WINDOWS + if (isConsoleConnected) + return; - if (AttachConsole(ATTACH_PARENT_PROCESS) != FALSE) - { - freopen("CONIN$", "r", stdin); - freopen("CONOUT$", "w", stdout); - freopen("CONOUT$", "w", stderr); - isConsoleConnected = true; - } - #endif + HANDLE hOut = GetStdHandle(STD_OUTPUT_HANDLE); + DWORD dwFileType = GetFileType(hOut); + + if (dwFileType == FILE_TYPE_UNKNOWN || dwFileType == FILE_TYPE_CHAR) + { + if (AttachConsole(ATTACH_PARENT_PROCESS) != FALSE) + { + freopen("CONOUT$", "w", stdout); + freopen("CONOUT$", "w", stderr); + freopen("CONIN$", "r", stdin); + isConsoleConnected = true; + } + } + else + { + isConsoleConnected = true; + } + #endif } void HandlePostUpdate()