因此,我一直在弄乱控制台屏幕缓冲区,并且注意到在不同的机器上编译和运行代码时,我的代码无法以相同的方式工作。
因此,当我在运行 Windows 10 Home 的笔记本电脑上使用Arrays.asList
更改缓冲区时,可以获得屏幕更改的预期结果。当我使用SetConsoleActiveScreenBuffer
输出某些内容时,它将输出到我更改为的新缓冲区中。但是,在运行 Windows 10 Enterprise N 2016 LTSB 的桌面上,当我更改缓冲区并使用printf
输出某些内容时,它将输出到原始缓冲区而不是新设置的活动缓冲区。当我返回到旧缓冲区时,我会看到输出的文本。现在,由于我没有可用于atm的笔记本电脑,因此我设置了运行Windows 10 Pro的 VM ,安装了VS社区并编译了代码,并看到了与执行此操作时相同的结果在我的笔记本电脑上。
我的问题是:
我想要的效果是在将其设置为活动缓冲区之后,能够使用printf写入新缓冲区。
代码如下:
printf
我尝试了不同的SDK版本,但是它们似乎对这段代码的执行方式没有影响。
该项目使用Windows SDK版本:10.0.16299.0
VM Windows版本为10.0.17763内部版本17763
Windows桌面版本为10.0.14393 Build 14393