Pour rediriger temporairement stdout
vers un fichier, que je fais:freopen_s sur stdout provoque des problèmes avec GetConsoleScreenBufferInfo sous Windows
printf("Before");
freopen_s(&stream, "test.txt", "w", stdout);
printf("During");
freopen_s(&stream, "CONOUT$", "w", stdout);
printf("After");
Cela fonctionne, en faisant cependant:
CONSOLE_SCREEN_BUFFER_INFO sbi = {0};
GetConsoleScreenBufferInfo(GetStdHandle(STD_OUTPUT_HANDLE), &sbi);
ne semble plus fonctionner . Il renvoie false et GetLastError()
renvoie 6
, ce qui se traduit par le message "Le handle est invalide". avec FormatMessage
.
Un conseil sur la raison pour laquelle la poignée peut être invalide? Fait intéressant, printf
continue à fonctionner comme prévu et SetConsoleTextAttribute
fonctionne même avec le même handle.
qui ont fixé mon problème. Merci! – Sydius