Winform实现屏蔽键盘的win和alt+F4(C#)

   最近在做一个恶搞程序,就是打开后,程序获得桌面的截图然后,然后全屏显示在屏幕上,用户此时则不能进行任何操作。。此时希望用户不能通过键盘alt+F4来结束程序及通过Win的组合键对窗口进行操作。我在网上搜索了一下,采用全局键盘钩子的方法可以做到屏蔽用户对键盘的操作。。以下为相关代码,用到了Form1_load事件和Form1_FormClosing事件:
  1. using System; 
  2. using System.Collections.Generic; 
  3. using System.ComponentModel; 
  4. using System.Data; 
  5. using System.Drawing; 
  6. using System.Text; 
  7. using System.Windows.Forms; 
  8. using System.Runtime.InteropServices; 
  9. using System.Reflection; 
  10. namespace WindowsApplication10 
  11. public partial class Form1 : Form 
  12. // 安装钩子 
  13. [DllImport("user32.dll")] 
  14. public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId); 
  15. // 卸载钩子 
  16. [DllImport("user32.dll")] 
  17. public static extern bool UnhookWindowsHookEx(int idHook); 
  18. // 继续下一个钩子 
  19. [DllImport("user32.dll")] 
  20. public static extern int CallNextHookEx(int idHook, int nCode, Int32 wParam, IntPtr lParam); 
  21. //声明定义 
  22. public delegate int HookProc(int nCode, Int32 wParam, IntPtr lParam); 
  23. static int hKeyboardHook = 0; 
  24. HookProc KeyboardHookProcedure; 
  25. public Form1() 
  26. InitializeComponent(); 
  27. private void Form1_Load(object sender, EventArgs e) 
  28. HookStart(); 
  29. private void Form1_FormClosing(object sender, FormClosingEventArgs e) 
  30. HookStop(); 
  31. // 安装钩子 
  32. public void HookStart() 
  33. if (hKeyboardHook == 0) 
  34. // 创建HookProc实例 
  35. KeyboardHookProcedure = new HookProc(KeyboardHookProc); 
  36. //定义全局钩子 
  37. hKeyboardHook = SetWindowsHookEx(13, KeyboardHookProcedure, Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]), 0); 
  38. if (hKeyboardHook == 0) 
  39. HookStop(); 
  40. throw new Exception("SetWindowsHookEx failed."); 
  41. //钩子子程就是钩子所要做的事情。 
  42. private int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam) 
  43. //这里可以添加别的功能的代码 
  44. return 1; 
  45. // 卸载钩子 
  46. public void HookStop() 
  47. bool retKeyboard = true
  48. if (hKeyboardHook != 0) 
  49. retKeyboard = UnhookWindowsHookEx(hKeyboardHook); 
  50. hKeyboardHook = 0; 
  51. if (!(retKeyboard)) throw new Exception("UnhookWindowsHookEx failed."); 
  52. }
(注:该方法可以屏蔽win和alt+F4但是不能屏蔽ctrl+alt+del
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值