『QQ:1353814576』

C#控制台程序屏蔽禁用右上角关闭按钮的方法


C#控制台程序右上角的关闭按钮怎么屏蔽

最近老接到同事反馈系统程序老是莫名其妙的退出了, 最后发现是客户误操作把服务程序给关了,因为部署的程序是以控制台形式开发的,客户看到以为没啥用就给关了,这大过年期间可把我整无语了,好好地程序你没事手贱关它干啥呢,就想着把控制台上的关闭按钮给他屏蔽了,总算过了几天清静日子。

屏蔽控制台关闭按钮的实现方法如下:

[DllImport("user32.dll", EntryPoint = "GetSystemMenu")]
extern static IntPtr GetSystemMenu(IntPtr hWnd, IntPtr bRevert);
[DllImport("user32.dll", EntryPoint = "RemoveMenu")]
extern static IntPtr RemoveMenu(IntPtr hMenu, uint uPosition, uint uFlags);
//////
///锁定控制台关闭按钮
//////
public static void DisbleCloseButton(IntPtr hWnd)
{
            IntPtr closeMenu = GetSystemMenu(hWnd, IntPtr.Zero);
            uint SC_CLOSE = 0xF060;
            RemoveMenu(closeMenu, SC_CLOSE, 0x0);
}

程序中调用屏蔽关闭按钮的例子

System.Diagnostics.Process instance = System.Diagnostics.Process.GetCurrentProcess();
DisbleClosebtn(instance.MainWindowHandle);

最终效果无法做到隐藏关闭按钮,但是解决了关闭按钮无法点击 基本解决了客户误点的问题