关于winform屏蔽锁
在项目里经常要设计一个窗体全屏,然后屏蔽一些窗体的事件,比如 屏蔽开始按钮 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屏蔽锁相关推荐
- winform屏蔽Alt+F4组合键以防止用户关闭对话框
winform屏蔽Alt+F4组合键以防止用户关闭对话框,屏蔽Alt + F4的方法有很多,这里列出了一个比较简单而奏效的方法. 1. 捕获窗体的KeyDown事件 给窗体添加KeyDown事件,然后 ...
- Android 屏蔽锁屏界面上的通知显示
一. 前言 [定制需求描述]:在插入SD后, 锁屏状态下, 去掉提示"SD卡可用于传输照片和媒体文件" 需求拆解: 要求正常显示在SystemUI下拉状态栏, 只需要屏蔽在锁 ...
- winform屏蔽鼠标事件
方法一:禁用鼠标事件 public partial class Form1 : Form,IMessageFilter { public Form1() { InitializeComponent() ...
- android屏蔽锁屏广播,android禁止锁屏保持常亮(示例代码)
在播放video的时候在mediaplayer mMediaPlayer.setScreenOnWhilePlaying(true); 已经设置了,在原生的android没有问题和在defy上也没有问 ...
- Winform屏蔽鼠标双击和右键
添加接口:IMessageFilter 构造函数中添加:Application.AddMessageFilter(this); 代码: public bool PreFilterMessage(ref ...
- Android 屏蔽系统锁屏的方法
对于有些应用需要在某些时候屏蔽掉系统的锁屏,当然这里面的屏蔽系统锁屏指的是用户没有设置pin.图案.数字等密码的情况,一般这种情况我们是屏蔽不了的,这里屏蔽的锁屏是指「无密码的情况下」 1.Keygu ...
- 被黑指数MAX?浅聊汽车钥匙安全
拿着手机打开APP远程开启车内空调,遥控汽车打开车门,坐进车里听音乐.看电影.打游戏.发呆.开视频会议,或者是按几个按钮设定好路线,让汽车自动行驶,将纷扰都抛之脑后--这是很多人都向往的智能汽车伊甸园 ...
- Android 禁止下拉菜单栏
Android 禁止下拉菜单栏 如下图,有时候我们需要禁止用户下拉出菜单栏. 在解决这个问题之前,我们需要知道,下拉菜单栏总共有两种,一种是锁屏下的下拉菜单,一种是非锁屏下的下拉菜单.因此需要两种不同 ...
- Cython屏蔽GIL锁实践
环境: Ubuntu19.10 四核八线程. 题外话,八线程属于超线程概念,程序员不可控制,属于操作系统调度的工作. 基本概念: 什么时候使用并发/并行? 资料中有两种说法: 一种是: 涉及到多核就是 ...
最新文章
- 用asp.net实现的把本文推荐给好友功能
- ubuntu14.04初体会
- applicationContext.xml存放的位置
- 深入理解JVM-垃圾回收器
- POJ - 2676 Sudoku(dfs)
- wingdows安装psutil_python 第一步
- oracle 重复的记录数,如何确定Oracle数据库表中重复的记录
- java单一登录_java实现单一登录 踢人效果
- elasticearch 安装
- QT添加资源和样式表(设计窗口背景图)
- 1016 部分A+B (15 分)—PAT (Basic Level) Practice (中文)
- /proc/sysrq-trigger的使用
- How to recover deleted data from SQL Server
- CSDN博客——修改字体、字号与颜色
- 乐鑫再次称王WiFi MCU市场
- 计算机语言s是什么,什么是语义学(Semantics)?
- 食物也疯狂!KOOCAN盘点因为食物毁掉的中国电视剧
- sicp3.5.2、3.5.3节部分习题尝试解答
- HTML——表单标签<form>与表单的实现
- 调制与变频、基带信号与射频信号中的IQ调制(又称矢量调制)
热门文章
- android弹球动画,Android动画之自定义Evaluator实现弹球效果
- 字节跳动测试开发4轮面试_字节跳动2018招聘测试开发方向(第四批)
- java线程同步的死锁_Java基础之线程5-线程同步死锁
- java中exec命令,java - 从Java中运行exec命令需要 bash 吗? - SO中文参考 - www.soinside.com...
- c语言不定长数组_学习C语言这三块“硬骨头”不搞定学了也是白学
- python客户端和服务端通信
- Linux添加文件命令
- 手机端网站底部悬浮 广告代码 代关闭_网站被劫持,网站被劫持了应该怎么办?怎么解决网站被劫持?...
- Kubernetes的Device Plugin机制源码解析
- Spark学习笔记:数据读取和保存