在项目里经常要设计一个窗体全屏,然后屏蔽一些窗体的事件,比如 屏蔽开始按钮  alt+F4等等按钮,这里给出示例代码希望对大家有帮助

  1         static int hHook = 0; //全局钩子数  2   3         public const int WH_KEYBOARD_LL = 13;  //LowLevel键盘截获,如果是WH_KEYBOARD=2,并不能对系统键盘截取   4   5         //委托     6         public delegate int HookProc(int nCode, int wParam, IntPtr lParam);  7         event HookProc KeyBoardHookProcedure;  8   9         //键盘Hook结构   10         [StructLayout(LayoutKind.Sequential)] 11         public class KeyBoardHookStruct 12         { 13             public int vkCode; 14             public int scanCode; 15             public int flags; 16             public int time; 17             public int dwExtraInfo; 18         } 19  20     #region DllImport 21         //设置钩子    22         [DllImport("user32.dll")] 23         public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId); 24         [DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)] 25         //抽掉钩子    26         public static extern bool UnhookWindowsHookEx(int idHook); 27         [DllImport("user32.dll")] 28         //调用下一个钩子    29         public static extern int CallNextHookEx(int idHook, int nCode, int wParam, IntPtr lParam); 30  31         [DllImport("kernel32.dll")] 32         public static extern int GetCurrentThreadId(); 33  34         [DllImport("kernel32.dll")] 35         public static extern IntPtr GetModuleHandle(string name); 36  37         #endregion 38  39      #region 自定义事件函数 40  41         public void Hook_Start() 42         { 43             // 安装键盘钩子    44             if (hHook == 0) 45             { 46                 KeyBoardHookProcedure = new HookProc(KeyBoardHookProc);    47  48                 hHook = SetWindowsHookEx(WH_KEYBOARD_LL,KeyBoardHookProcedure,GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0); 49  50                 //如果设置钩子失败.    51                 if (hHook == 0) 52                 { 53                     Hook_Clear(); 54                     //throw new Exception("设置Hook失败!");    55                 } 56             } 57         } 58  59         //取消钩子事件    60         public void Hook_Clear() 61         { 62             bool retKeyboard = true; 63             if (hHook != 0) 64             { 65                 retKeyboard = UnhookWindowsHookEx(hHook); 66                 hHook = 0; 67             } 68             //如果去掉钩子失败.    69             if (!retKeyboard) throw new Exception("UnhookWindowsHookEx failed."); 70         } 71  72   //这里添加自己想要的信息处理    73         public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam) 74         { 75           if (nCode >= 0) 76           { 77               KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct)); 78               if (kbh.vkCode == 91)  // 截获左win(开始菜单键)  79               { 80                   return 1; 81               } 82               if (kbh.vkCode == 92)// 截获右win  83               { 84                   return 1; 85               } 86               //截获Ctrl+Esc  87               if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control)  88               { 89                   return 1; 90               } 91               //截获alt+f4 92               if (kbh.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt)   93               { 94                   return 1; 95               } 96               //截获alt+tab  97               if (kbh.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt) 98               { 99                   return 1;100               }101               //截获Ctrl+Shift+Esc 102               if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Shift) 103               {104                   return 1;105               }106               //截获alt+空格107               if (kbh.vkCode == (int)Keys.Space && (int)Control.ModifierKeys == (int)Keys.Alt)108               {109                   return 1;110               }111               //截获Ctrl+Alt+Delete112               if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt + (int)Keys.Delete)      113               {114                   return 1;115               } 116 117 118           }119             return CallNextHookEx(hHook, nCode, wParam, lParam);120         }121 122         #endregion123 124 125         private void frmMain_Load(object sender, EventArgs e)126       {127           Hook_Start();128       }129 130       private void frmMain_FormClosing(object sender, FormClosingEventArgs e)131       {132           Hook_Clear();133       }

代码基本就是这样,如果不明白可以大家交流一下

关于winform屏蔽锁相关推荐

  1. winform屏蔽Alt+F4组合键以防止用户关闭对话框

    winform屏蔽Alt+F4组合键以防止用户关闭对话框,屏蔽Alt + F4的方法有很多,这里列出了一个比较简单而奏效的方法. 1. 捕获窗体的KeyDown事件 给窗体添加KeyDown事件,然后 ...

  2. Android 屏蔽锁屏界面上的通知显示

    一. 前言 [定制需求描述]:在插入SD后,  锁屏状态下, 去掉提示"SD卡可用于传输照片和媒体文件" 需求拆解:  要求正常显示在SystemUI下拉状态栏,  只需要屏蔽在锁 ...

  3. winform屏蔽鼠标事件

    方法一:禁用鼠标事件 public partial class Form1 : Form,IMessageFilter { public Form1() { InitializeComponent() ...

  4. android屏蔽锁屏广播,android禁止锁屏保持常亮(示例代码)

    在播放video的时候在mediaplayer mMediaPlayer.setScreenOnWhilePlaying(true); 已经设置了,在原生的android没有问题和在defy上也没有问 ...

  5. Winform屏蔽鼠标双击和右键

    添加接口:IMessageFilter 构造函数中添加:Application.AddMessageFilter(this); 代码: public bool PreFilterMessage(ref ...

  6. Android 屏蔽系统锁屏的方法

    对于有些应用需要在某些时候屏蔽掉系统的锁屏,当然这里面的屏蔽系统锁屏指的是用户没有设置pin.图案.数字等密码的情况,一般这种情况我们是屏蔽不了的,这里屏蔽的锁屏是指「无密码的情况下」 1.Keygu ...

  7. 被黑指数MAX?浅聊汽车钥匙安全

    拿着手机打开APP远程开启车内空调,遥控汽车打开车门,坐进车里听音乐.看电影.打游戏.发呆.开视频会议,或者是按几个按钮设定好路线,让汽车自动行驶,将纷扰都抛之脑后--这是很多人都向往的智能汽车伊甸园 ...

  8. Android 禁止下拉菜单栏

    Android 禁止下拉菜单栏 如下图,有时候我们需要禁止用户下拉出菜单栏. 在解决这个问题之前,我们需要知道,下拉菜单栏总共有两种,一种是锁屏下的下拉菜单,一种是非锁屏下的下拉菜单.因此需要两种不同 ...

  9. Cython屏蔽GIL锁实践

    环境: Ubuntu19.10 四核八线程. 题外话,八线程属于超线程概念,程序员不可控制,属于操作系统调度的工作. 基本概念: 什么时候使用并发/并行? 资料中有两种说法: 一种是: 涉及到多核就是 ...

最新文章

  1. 用asp.net实现的把本文推荐给好友功能
  2. ubuntu14.04初体会
  3. applicationContext.xml存放的位置
  4. 深入理解JVM-垃圾回收器
  5. POJ - 2676 Sudoku(dfs)
  6. wingdows安装psutil_python 第一步
  7. oracle 重复的记录数,如何确定Oracle数据库表中重复的记录
  8. java单一登录_java实现单一登录 踢人效果
  9. elasticearch 安装
  10. QT添加资源和样式表(设计窗口背景图)
  11. 1016 部分A+B (15 分)—PAT (Basic Level) Practice (中文)
  12. /proc/sysrq-trigger的使用
  13. How to recover deleted data from SQL Server
  14. CSDN博客——修改字体、字号与颜色
  15. 乐鑫再次称王WiFi MCU市场
  16. 计算机语言s是什么,什么是语义学(Semantics)?
  17. 食物也疯狂!KOOCAN盘点因为食物毁掉的中国电视剧
  18. sicp3.5.2、3.5.3节部分习题尝试解答
  19. HTML——表单标签<form>与表单的实现
  20. 调制与变频、基带信号与射频信号中的IQ调制(又称矢量调制)

热门文章

  1. android弹球动画,Android动画之自定义Evaluator实现弹球效果
  2. 字节跳动测试开发4轮面试_字节跳动2018招聘测试开发方向(第四批)
  3. java线程同步的死锁_Java基础之线程5-线程同步死锁
  4. java中exec命令,java - 从Java中运行exec命令需要 bash 吗? - SO中文参考 - www.soinside.com...
  5. c语言不定长数组_学习C语言这三块“硬骨头”不搞定学了也是白学
  6. python客户端和服务端通信
  7. Linux添加文件命令
  8. 手机端网站底部悬浮 广告代码 代关闭_网站被劫持,网站被劫持了应该怎么办?怎么解决网站被劫持?...
  9. Kubernetes的Device Plugin机制源码解析
  10. Spark学习笔记:数据读取和保存