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;//} #endregionbase.WndProc(ref m);}
参考链接:在winform中屏蔽双击最大化或最小化窗体(C#实现),禁用任务管理器结束程序 - 星空天宇 - 博客园