zoukankan      html  css  js  c++  java
  • 在winform中屏蔽双击最大化或最小化窗体(C#实现),禁用任务管理器结束程序

    在需要屏蔽双击窗体最大化、最小化、关闭、拖拽窗体中写入以下代码,可以根据需要取舍代码: 

    protected override void WndProc(ref Message m)
            {
                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;
                    }
                }
                base.WndProc(ref m);
            }
    

     在winform 中利用注册表禁用或启用任务管理器:

    禁用任务管理器:
    Registry.CurrentUser.CreateSubKey("Software\Microsoft\Windows\CurrentVersion\Policies\System").SetValue("DisableTaskMgr", 1);
    启用任务管理器:
    Registry.CurrentUser.CreateSubKey("Software\Microsoft\Windows\CurrentVersion\Policies\System").SetValue("DisableTaskMgr", 0);

    上面使用注册表功能需要管理员权限,如果没有管理员权限运行程序会报错,可以加入是否以管理员权限运行的判断:

        public class Utils
        {
            public static bool IsAdministrator()
            {
                WindowsIdentity current = WindowsIdentity.GetCurrent();
                WindowsPrincipal windowsPrincipal = new WindowsPrincipal(current);
                return windowsPrincipal.IsInRole(WindowsBuiltInRole.Administrator);
            }
        }
  • 相关阅读:
    单页面应用和多页面应用区别及优缺点
    Vue中双向数据绑定是如何实现的?
    vue组件中data为什么必须是一个函数?
    $nextTick的使用
    分别简述computed和watch的使用场景
    webpack结合postcss-loader实现css样式浏览器兼容前缀的添加
    KeyError:‘uid' Python常见错误
    GO语言学习之 跨平台编译
    图表动态选择+图表联动
    软件需求与分析大作业进度八
  • 原文地址:https://www.cnblogs.com/AlexanderZhao/p/12878860.html
Copyright © 2011-2022 走看看