GetConsoleScreenBufferInfo()
在使用标准输出初始化时返回错误。
有没有办法获得程序运行的控制台的句柄并获得其宽度,无论程序输出是否写入控制台?
也许GetConsoleWindow()
在这里是一个帮助,但我不知道如何使用它产生的句柄来获得宽度。
答案 0 :(得分:4)
你的问题没有多大意义。如果重定向输出,则控制台窗口宽度根本不重要。只有显示重定向输出的程序的控制台(如果有)才重要。你不能猜测记事本的窗口大小。
但是你可以获得控制台的句柄,你需要使用CreateFile():
HANDLE hConsole = CreateFile(L"CONOUT$",
GENERIC_READ | GENERIC_WRITE,
0, 0, OPEN_EXISTING, 0, 0);
CONSOLE_SCREEN_BUFFER_INFO info = {0};
BOOL ok = GetConsoleScreenBufferInfo(hConsole, &info);
printf("OK = %d, %d x %d\n", ok,
info.srWindow.Right - info.srWindow.Left + 1,
info.srWindow.Bottom - info.srWindow.Top + 1);
重定向文件中的输出:
OK = 1,80 x 25
答案 1 :(得分:2)
查看GetConsoleScreenBufferInfo
,特别是CONSOLE_SCREEN_BUFFER
的srWindow
成员。