[C#] 禁用控制台关闭按钮

发布时间 2023-12-21 17:31:25作者: WebEnh
禁用控制台关闭按钮

    internal class Program

    {

        [DllImport("user32.dll", EntryPoint = "FindWindow")]

        extern static IntPtr FindWindow(string lpClassName, string lpWindowName);

        [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);

        /// <summary>

        /// 禁用关闭按钮

        /// </summary>

        static void closebtn()

        {

            IntPtr windowHandle = FindWindow(null, "AutoTecon数采系统");//名称要一致

            IntPtr closeMenu = GetSystemMenu(windowHandle, IntPtr.Zero);

            uint SC_CLOSE = 0xF060;

            RemoveMenu(closeMenu, SC_CLOSE, 0x0);

        }

        static void Main(string[] args)

        {

            Console.Title = "AutoTecon数采系统";

            closebtn();

            Console.CancelKeyPress += new ConsoleCancelEventHandler(CloseConsole);

            Console.WriteLine("Starting...");

            Console.WriteLine("退出请按 Ctrl+C ");

            /// <summary>

            /// 关闭时的事件

            /// </summary>

            /// <param name="sender">对象</param>

            /// <param name="e">参数</param>

            static void CloseConsole(object sender, ConsoleCancelEventArgs e)

            {

                Environment.Exit(0);

                //return;

            }

}