Доброго времени суток. Помогите новичку, пожалуйста, разобраться. После создания и освобождения доп.консоли не могу писать в главную консоль. В чем проблема? Прошу прощения, я не знаю как выделить код. #include <windows.h> #include <string.h> #include <unistd.h> LPCTSTR Phrase = "Test"; // фраза, выводимая на стандартный вывод int main(void) { HANDLE hMainConsoleOut; // дескриптор вывода главной консоли HANDLE hAddConsoleOut; // дескриптор вывода доп. консоли DWORD dwOchars; // считано символов BOOL OutResult; // результат вывода строки на экран(TRUE/FALSE) // получаем дескриптор вывода и пишем в главную консоль hMainConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE); WriteConsole(hMainConsoleOut, Phrase, strlen(Phrase), &dwOchars, NULL); FreeConsole(); // создаем доп. консоль, получаем дескриптор и отображаем фразу AllocConsole(); hAddConsoleOut = GetStdHandle(STD_OUTPUT_HANDLE); WriteConsole(hAddConsoleOut, Phrase, strlen(Phrase), &dwOchars, NULL); sleep(2); CloseHandle(hAddConsoleOut); FreeConsole(); // пробуем снова писать в главную консоль OutResult = WriteConsole(hMainConsoleOut, Phrase, strlen(Phrase), &dwOchars, NULL); // Ошибка! if(OutResult == FALSE) return -1; sleep(2); return 0; }
У процесса может быть только одна консоль. Она создаётся при старте консольного exe, или при помощи AllocConsole(); , а убивается при завершении процесса или с FreeConsole(); Стандартные хендлы закрывать не надо.