C#控制台禁用调整大小

本文关键字:调整 控制台 | 更新日期: 2023-09-27 17:57:26

如何通过编程实现控制台窗口不可调整大小。

我不希望用户用鼠标更改控制台窗口的大小。

C#控制台禁用调整大小

请参阅MSDN上这篇文章的答案。它需要p-调用:

private const int MF_BYCOMMAND = 0x00000000;
public const int SC_CLOSE = 0xF060;
public const int SC_MINIMIZE = 0xF020;
public const int SC_MAXIMIZE = 0xF030;
public const int SC_SIZE = 0xF000;//resize
[DllImport("user32.dll")]
public static extern int DeleteMenu(IntPtr hMenu, int nPosition, int wFlags);
[DllImport("user32.dll")]
private static extern IntPtr GetSystemMenu(IntPtr hWnd, bool bRevert);
[DllImport("kernel32.dll", ExactSpelling = true)]
private static extern IntPtr GetConsoleWindow();
static void Main(string[] args)
{
    IntPtr handle = GetConsoleWindow();
    IntPtr sysMenu = GetSystemMenu(handle, false);
    if (handle != IntPtr.Zero)
    {
        DeleteMenu(sysMenu, SC_CLOSE, MF_BYCOMMAND);
        DeleteMenu(sysMenu, SC_MINIMIZE, MF_BYCOMMAND);
        DeleteMenu(sysMenu, SC_MAXIMIZE, MF_BYCOMMAND);
        DeleteMenu(sysMenu, SC_SIZE, MF_BYCOMMAND);//resize
    }
    Console.Read();
}

注意,这不会阻止Windows窗口捕捉(例如,将窗口拖动到屏幕边缘,Win+1Win+右TR

既然你试图禁用调整大小,我猜你也不会想要滚动条。为此,请参阅删除C#中控制台滚动条后的剩余空间的答案(匹配Console.SetWindowSizeSetBufferSize后剩余的空间;还需要p调用来"修复")。

我不确定你能不能避免这种行为。但是您可以尝试使用WindowHeight、WindowWidth、LargestWindowHeight和LargestWindow Width。请参阅:https://msdn.microsoft.com/pt-br/library/system.console(v=vs.110).aspx