【问题标题】:Looking to force Alt + Enter full screen and a forced zoom (Ctrl + Scroll) Inside of a console application in C#在 C# 中的控制台应用程序内部寻找强制 Alt + Enter 全屏和强制缩放(Ctrl + Scroll)
【发布时间】:2022-01-16 14:14:06
【问题描述】:

基本上无法找到并回答这个问题,或者甚至可能。 我有一个正在为班级创建的游戏,当强制全屏和缩放设置为特定大小时,它看起来会更好。我想知道我是否可以在无需玩家自己更改的情况下重新创建它。

ALT + ENTER 全屏 和 CTRL + 滚轮缩放

【问题讨论】:

标签: c# console console-application zooming screen-size


【解决方案1】:

对于您的问题的字面答案:

  • 发送键以进入全屏模式,并且
  • 发送 Ctrl+MouseWheel

您需要 Win32 互操作的帮助以将键盘和鼠标消息发送到您的控制台窗口。

using System.Runtime.InteropServices;
public class Win32
{
    public const int VK_F11 = 0x7A;
    public const int SW_MAXIMIZE = 3;

    public const uint WM_KEYDOWN = 0x100;
    public const uint WM_MOUSEWHEEL = 0x20A;

    public const uint WHEEL_DELTA = 120;
    public const uint MK_CONTROL = 0x00008 << 16;

    [DllImport("kernel32.dll")]
    public static extern IntPtr GetConsoleWindow();

    [DllImport("user32.dll")]
    public static extern IntPtr PostMessage(IntPtr hWnd, uint Msg, IntPtr wParam, IntPtr lParam);

    [DllImport("user32.dll")]
    public static extern bool ShowWindow(IntPtr hWnd, int nCmdShow);
}

作为参考,魔术数字来自:

然后您可以像这样简单地发送您的按键和鼠标滚轮:

using static Win32;

// Get window handle of the console
var hwnd = GetConsoleWindow();

// Go fullscreen by sending the F11 keydown message.
PostMessage(hwnd, WM_KEYDOWN, (IntPtr)VK_F11, IntPtr.Zero);

// Or maximize the window instead. Your users may not know how to get out of fullscreen...
/// ShowWindow(hwnd, SW_MAXIMIZE);

// Send mouse wheel message.
// MK_CONTROL: Holds the Ctrl key. WHEEL_DELTA: Positive=Up, Negative=Down.
PostMessage(hwnd, WM_MOUSEWHEEL, (IntPtr)(MK_CONTROL | WHEEL_DELTA), IntPtr.Zero);

或者,正如@JeremyLakerman 在对您的问题的评论中提到的那样,您可以将set the console font 设置为更大的尺寸;这比发送 Ctrl+MouseWheel 要好得多,但也涉及更多。

【讨论】:

  • 非常感谢。正是我想要的!非常感谢带有注释的解释以供参考!
  • @DannyDestroyer 很高兴它成功了。您介意将其标记为已接受的答案吗? PS:发送Alt+EnterF11 更复杂一些。如果您真的感兴趣,请查看如何在PostMessage() 中包含ScanCode
猜你喜欢
  • 2017-02-25
  • 1970-01-01
  • 2015-07-12
  • 1970-01-01
  • 1970-01-01
  • 2017-10-14
  • 2011-05-24
  • 2012-03-17
  • 1970-01-01
相关资源
最近更新 更多