winform中屏蔽双击最大化或最小化窗体(C#实现),禁用任务管理器结束程序,在需要屏蔽双击窗体最大化、最小化、关闭

winform中屏蔽双击最大化或最小化窗体(C#实现),禁用任务管理器结束程序,在需要屏蔽双击窗体最大化、最小化、关闭

 protected override void WndProc(ref Message m)
 {
     #region 处理点击窗体标题栏放大缩小问题,禁用点击窗体标题栏放大缩小
     //logger.Info($"{m.Msg}");
     //处理点击窗体标题栏放大缩小问题,禁用点击窗体标题栏放大缩小
     //MaximizeBox = false;
     //if (m.Msg == 0xa3)
     //{
     //    return;
     //}

     #endregion


     #region 在winform中屏蔽双击最大化或最小化窗体(C#实现),禁用任务管理器结束程序,在需要屏蔽双击窗体最大化、最小化、关闭、拖拽窗体中写入以下代码,可以根据需要取舍代码
     if (m.Msg == 0x112)
     {
         switch ((int)m.WParam)
         {
             //禁止双击标题栏关闭窗体
             case 0xF063:
             case 0xF093:
                 m.WParam = IntPtr.Zero;
                 break;

             //禁止拖拽标题栏还原窗体
             case 0xF012:
             case 0xF010:
                 m.WParam = IntPtr.Zero;
                 break;

             //禁止双击标题栏
             case 0xf122:
                 m.WParam = IntPtr.Zero;
                 break;


             //允许关闭按钮
             case 0xF060:
                 //m.WParam = IntPtr.Zero;
                 break;

             //允许最大化按钮
             case 0xf020:
                 //m.WParam = IntPtr.Zero;
                 break;

             //允许最小化按钮
             case 0xf030:
                 //m.WParam = IntPtr.Zero;
                 break;

             //允许还原按钮
             case 0xf120:
                 //m.WParam = IntPtr.Zero;
                 break;

             default:
                 m.WParam = IntPtr.Zero;
                 break;
         }
     } 
     #endregion


     #region MyRegion
     //// 定义 WM_SYSCOMMAND 消息常量
     //private const int WM_SYSCOMMAND = 0x0112;
     //// 定义 SC_CLOSE 消息常量
     //private const int SC_CLOSE = 0xF060;

     //// 检查消息是否是系统命令
     //if (m.Msg == 0x0112 && m.WParam.ToInt32() == 0xF060)
     //{
     //    // 如果你想允许关闭,不需要处理,直接调用基类的WndProc即可
     //    // base.WndProc(ref m);

     //    // 如果你想弹出消息框并等待用户响应,可以这样做:
     //    DialogResult result = MessageBox.Show("确定要退出吗?", "退出确认", MessageBoxButtons.YesNo, MessageBoxIcon.Question);
     //    if (result == DialogResult.Yes)
     //    {
     //        // 用户选择"是",可以关闭窗体
     //        this.Close();
     //    }
     //    // 否则,不做任何操作,弹窗将保持打开状态

     //    // 阻止默认的关闭处理
     //    return;
     //} 
     #endregion

     base.WndProc(ref m);
 }

 参考链接:https://www.cnblogs.com/AlexanderZhao/p/12878860.html

posted @ 2024-12-20 15:12  龙骑科技  阅读(7)  评论(0编辑  收藏  举报