在Windows 10中,可以通过按F11或Alt + Enter将控制台应用切换到全屏模式。请注意,这不是Windows Vista之前支持的祖父的纯文本VGA全屏模式。尽管在此模式下没有可见的任务栏或标题栏,但其他窗口(或“开始”菜单)可以在其顶部弹出,并且它是Windows GUI的一部分。
我有一个在Windows 10上运行的.NET Core / C#控制台应用程序,当我需要将其切换到全屏模式时,我会使用P / Invoke在自带窗口后向自己的窗口发送F11击键它到前景。显然,如果应用程序之前已经手动切换到全屏模式,它就无法满足我的要求,但是我可以尝试通过对窗口大小进行一些计算以检测到它来解决该问题。
我正在寻找一种更简单的方法。我想知道:
using System;
using System.Runtime.InteropServices;
namespace Test
{
internal class Program
{
[DllImport("kernel32.dll")]
private static extern IntPtr GetStdHandle(int handle);
private static void Main(string[] args)
{
IntPtr hConsole = GetStdHandle(-11);
SetConsoleDisplayMode(hConsole, 1, out COORD b1);
Console.ReadLine();
}
[DllImport("kernel32.dll", SetLastError = true)]
private static extern bool SetConsoleDisplayMode(IntPtr ConsoleOutput, uint Flags, out COORD NewScreenBufferDimensions);
[StructLayout(LayoutKind.Sequential)]
public struct COORD
{
public short X;
public short Y;
public COORD(short X, short Y)
{
this.X = X;
this.Y = Y;
}
}
}
}