是否可以创建一个比屏幕大的 Windows 终端? C++

Is it possible to create a Windows Terminal bigger than the Screen? C++

我正在测试一些东西,我想创建一个比当前屏幕尺寸更大的 Windows 终端。我知道这听起来像是一个愚蠢的想法,但这是我正在努力实现的目标。

我尝试过不同的方法,例如:

HWND console = GetConsoleWindow();
RECT r;
GetWindowRect(console, &r);
MoveWindow(console, r.left, r.top, 100, 3000, TRUE);

并且:

DWORD CurrentMode;
GetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), &CurrentMode);
SetConsoleMode(GetStdHandle(STD_OUTPUT_HANDLE), CurrentMode | ENABLE_VIRTUAL_TERMINAL_PROCESSING);
fputs("\x1b[8;30;800t", stdout);

我在不同的帖子上找到了这两种方法。这两种方法都会更改终端尺寸,但该尺寸不能大于屏幕。 我还意识到您不能(或者至少,我无法)手动调整 Windows 终端的大小以使其具有比屏幕更大的尺寸。

这似乎是一项不可能完成的任务,但也许有人知道如何去做。感谢您的帮助。

GetConsoleWindow 非常具体地不适用于 Windows 终端,就像它用于老式控制台 conhost.exe 一样。当在 Windows 终端中调用时,它会返回一个虚拟 HWND,而不是终端 window 的实际 HWND。 FWIW,通常 not recommended to use that API 向前发展。

即使使用 \x1b[8;;t 序列来调整控制台的大小,控制台也有非常明确的代码来防止自身被调整为大于当前所在显示器的大小。参见:

使用Gimespace desktop extender,它可以解除我用过的几乎所有程序的大小限制。如果你 运行 windows x64,你必须启用 x64 位模式,如果它在 运行 运行这个程序时不起作用,你可以通过选择“设置 windows 大小”托盘图标菜单中的命令。但是当桌面扩展器为 运行ning 时,setwindowpos api 调用也应该有效。