You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

调用SetConsoleScreenBufferInfoEx为何会导致控制台窗口缩小一行?

调用SetConsoleScreenBufferInfoEx后控制台窗口缩小一行的问题解决

调用WinAPI的SetConsoleScreenBufferInfoEx函数时会出现异常:哪怕只是读取控制台信息后原封不动写回,控制台窗口(非缓冲区)每次都会自动缩小一行。

复现代码

#include <windows.h>
#include <stdio.h>

int main() {
    HANDLE handle = GetStdHandle(STD_OUTPUT_HANDLE);
    CONSOLE_SCREEN_BUFFER_INFOEX info = {sizeof(info)};

    if(!GetConsoleScreenBufferInfoEx(handle, &info)) {
        fprintf(stderr, "Error getting console info\n");
        return 1;
    }

    // 未修改任何参数,直接写回控制台
    SetConsoleScreenBufferInfoEx(handle, &info);

    printf("Hello, Console!\n");

    return 0;
}

解决方法

在调用SetConsoleScreenBufferInfoEx之前,将info.srWindow.Bottom的值加1,再执行写入操作即可避免窗口缩小的问题:

// 在Set之前添加该行代码
info.srWindow.Bottom += 1;
SetConsoleScreenBufferInfoEx(handle, &info);

内容的提问来源于stack exchange,提问作者POLA-LCS

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.17 13:59:50