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

本文介绍了一种使用C#实现的恶搞程序,该程序能够捕获并阻止用户使用Alt+F4等快捷键关闭窗口。通过设置全局键盘钩子,程序实现了对键盘输入的拦截。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

  最近在做一个恶搞程序,就是打开后,程序获得桌面的截图然后,然后全屏显示在屏幕上,用户此时则不能进行任何操作。。此时希望用户不能通过键盘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
如果您在游戏对战中,突然某一按失灵,怎么办?匆忙结束游戏?马上跑去买新键盘?NO!有简单快捷的办法。 有 KeyboardShield 帮助您轻松改,用另外一个按代替它!(立竿见影!) KeyboardShield 还可以在您的笔记本键盘上,设置出一个数字小键盘,方便数字输入。 KeyboardShield 是一款实用的键盘屏蔽、重定义(改)小工具,可以屏蔽键盘(单一按、组合按皆可屏蔽),也可以将某一按(或组合按)重新定义为其他新的按(可以将一个单一按,重新定义成多个按的组合按,反之亦然)。 您可以从键盘上直接输入按,但是当您的键盘上某一损坏,或您的键盘上没有某时,可以从列表中选择输入按。 【提示1】注意在按之前,先确定输入焦点:“原按”或者“新按”(选中的输入焦点为粉红色)。当“原按“新按”显示的内容是您所期望的按时,点击“添加”按钮。 【提示2】除了直接按以及选择列表之外,您还可以直接输入编码,实现所需的各种按屏蔽及重定义。 【编码规则】: a 代表 Alt ,c 代表 Ctrl ,s 代表 Shift ,w 代表 Win 以 v 开头后加数字,表示按编码。 该编码可以从“选择输入”选择框中查到, 选择一项,则“当前按编码”显示就是选中那项按的编码。此时不要按,否则显示的会所按按的编码。总之,“当前按编码”显示的是最近一次输入(无论是按还是列表选择)的编码。 以“_”区分原按新按的编码,前为原按编码,后为新按编码 x 表示屏蔽 【注意】a、c、s、w 可以不分前后顺序,但是必须都要在 v 之前。 【规范例子】acwsv65_acwsv78 或者 acwsv56_x 例如: v95_x 表示屏蔽 Sleep (计算机睡眠) wv76_x 表示将组合 Win + L 屏蔽 acv65_x 表示将组合 Ctrl + Alt + A 屏蔽 v65_v66 表示将按 A 重新定义为 B,以后按 A ,就相当于按 B 。 v115_av115 表示将按 F4 重新定义为 Alt + F4 组合。 v123_v172 表示将 F12 重新定义为 “浏览主页”按,按F12就会上网访问IE主页。 v120_csv27 表示将 F9 重新定义为 Ctrl + Shift + Esc 组合,按F9就会弹出任务管理器。 【提示3】对于某些危险按屏蔽(例如 Sleep 睡眠按等),您可以先选中“屏蔽所有按”,然后再按某一个您想屏蔽的按,当它出现在“原按”后, 点击“添加”按钮,即加入到了屏蔽列表当中。最后勾掉“屏蔽所有按”即可 。 【提示4】在“更多设置”中,有专门针对 Ctrl + Alt + Del、Alt + Shift + NumLock 特殊组合的处理。 【提示5】在“更多设置”中,或者点击鼠标右菜单,有“保存”与“载入”功能,可以将当前已添加的按设置保存起来,方便以后载入。 【提示6】开启或关闭屏蔽、按功能的快捷默认情况下为 Ctrl + F12。您也可以定义成其他的按,点击鼠标右,选择“设为屏蔽开关快捷”,则将当前的按设为屏蔽、改功能开关的快捷。 绿色软件,无需安装,免费使用。运行需要 Microsoft .NET Framework 2.0 或更高版本支持。如果软件无法运行,您需要检查您的计算机上是否已安装Microsoft .NET Framework 2.0。Microsoft .NET Framework 2.0 可以在各大网站免费下载得到。 如果有其他疑问或建议,请联系:E-mail: WJW-Davy@QQ.com 或 登陆主页:http://hi.baidu.com/wjwdavy
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值