stdout一時的にファイルにリダイレクトするには、次のことを行っています。
printf("Before");
freopen_s(&stream, "test.txt", "w", stdout);
printf("During");
freopen_s(&stream, "CONOUT$", "w", stdout);
printf("After");
それは機能しますが、次のことを行います:
CONSOLE_SCREEN_BUFFER_INFO sbi = {0};
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &sbi);
もう機能していないようです。false をGetLastError()返し6、「ハンドルが無効です」というメッセージに変換されます。とFormatMessage。
ハンドルが無効である理由について何かアドバイスはありますか? 興味深いことに、printf期待どおりに機能し続けSetConsoleTextAttribute、同じハンドルでも機能します。