C#控制台禁用调整大小
本文关键字:调整 控制台 | 更新日期: 2023-09-27 17:57:26
如何通过编程实现控制台窗口不可调整大小。
我不希望用户用鼠标更改控制台窗口的大小。
请参阅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.SetWindowSize
和SetBufferSize
后剩余的空间;还需要p调用来"修复")。
我不确定你能不能避免这种行为。但是您可以尝试使用WindowHeight、WindowWidth、LargestWindowHeight和LargestWindow Width。请参阅:https://msdn.microsoft.com/pt-br/library/system.console(v=vs.110).aspx