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
、同じハンドルでも機能します。