在Windows 10上将.NET Core控制台应用程序切换到全屏模式

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了在Windows 10上将.NET Core控制台应用程序切换到全屏模式相关的知识,希望对你有一定的参考价值。

在Windows 10中,可以通过按F11Alt + 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;
            
        
    

以上是关于在Windows 10上将.NET Core控制台应用程序切换到全屏模式的主要内容,如果未能解决你的问题,请参考以下文章

如何在 .net Core MVC 控制器中返回 HttpResponseMessage 而不将其序列化为 JSON?

如何在 Windows 上将 OpenCV 库正确链接到 Eclipse?

.net core 跨平台桌面应用

如何使用 Windows 任务计划程序执行 .Net Core 2.0 控制台应用程序?

如何通过 Windows 防火墙允许 .NET Core 控制台应用程序 FTP 连接?

HttpClient、UseDefaultCredentials、Windows 身份验证、.NET Core 2.0+ 控制台应用程序收到 401 Unauthorized