【问题标题】:Switching a .NET Core console app into a full-screen mode on Windows 10在 Windows 10 上将 .NET Core 控制台应用程序切换到全屏模式
【发布时间】:2021-10-22 22:34:25
【问题描述】:

在 Windows 10 中,可以通过按 F11Alt+Enter 将控制台应用程序切换到全屏模式。请注意,这不是 Windows Vista 之前支持的您祖父的纯文本 VGA 全屏模式。虽然在此模式下没有可见的任务栏或标题栏,但其他窗口(或开始菜单)可以在它上面弹出,它是 Windows GUI 的一部分。

我有一个在 Windows 10 上运行的 .NET Core / C# 控制台应用程序。当我需要将其切换到全屏模式时,我使用 P/Invoke 将 F11 击键发送到我的将其置于前台后自己的窗口。显然,如果应用程序之前已经手动切换到全屏模式,它不会做我想要的,但我可以尝试通过对窗口大小进行一些计算来检测它来解决它。

我正在寻找一种不那么迂回的方法来做到这一点。我想知道:

  • 如何从控制台应用检查当前是否处于全屏模式?
  • 如何将我的控制台应用程序切换为全屏模式?

【问题讨论】:

  • 你的应用怎么样?我的意思是,如果您从命令行运行像dotnet your_app.dll 这样的应用程序,那么 alt+enter 可以在 Windows 10 中运行,只需检查一下。你需要不同的东西吗?
  • 由于这是Windows特有的,您需要使用WINAPI函数。您可以在此处找到 Console Api 功能:docs.microsoft.com/en-us/windows/console/getconsoledisplaymode
  • @iakobski 谢谢,我可以使用此功能检查控制台窗口的当前模式。但是,显然,它的对应 SetConsoleDisplayMode 不受支持,并且对 Windows 10 没有影响。
  • 有一个 Github repo 专门用于新的控制台功能,这可能是询问是否以编程方式支持此功能的正确论坛,如果没有,则发出功能请求(#288 跟踪该选项要在启动时执行此操作,以编程方式按需执行似乎没有问题)。
  • @VladimirReshetnikov 可以请你分享你的代码吗?

标签: c# .net-core windows-10 console-application fullscreen


【解决方案1】:
  1. 检查全屏
 bool isFullScreen()
{
    return Console.WindowWidth ==Console.LargestWindowWidth &&  Console.WindowHeight ==  Console.LargestWindowHeight;
}
  1. 切换到全屏模式
Console.SetWindowSize(Console.LargestWindowWidth, Console.LargestWindowHeight);

【讨论】:

    【解决方案2】:

    我正在寻找一种不那么迂回的方法来做到这一点 由于全屏是 GUI 层 的一项功能,因此尝试在控制台应用程序中使用它总是有点迂回

    虽然其他答案描述了如何运行它,但在大多数情况下,如果您需要全屏,我会考虑创建您自己的带有 consolish 界面的窗口应用程序(WPF?UWP?)。这样你就可以完全控制屏幕,阻止退出等等。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-05-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-10-27
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多