diff --git a/src/main.cpp b/src/main.cpp index 9355465e..519b3b30 100644 --- a/src/main.cpp +++ b/src/main.cpp @@ -165,20 +165,25 @@ void UnitTests() } bool isConsoleConnected = false; -void requireConsole() -{ - #if BOOST_OS_WINDOWS - if (isConsoleConnected) - return; +void requireConsole() { + #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()