话不多说,直接上菜!

using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace UI
{public partial class Form2 : Form{Util.Hook hook;public Form2(){InitializeComponent();this.FormBorderStyle = FormBorderStyle.None;this.WindowState = FormWindowState.Maximized;this.TopMost = true;hook = new Util.Hook();hook.Start();this.FormClosing += new FormClosingEventHandler(Form2_FormClosing);this.buttonExit.Click += new EventHandler(ButtonExit_Click);    }private void Form2_FormClosing(object sender, FormClosingEventArgs e){hook.Close();}private void ButtonExit_Click(object sender, EventArgs e){Application.Exit();}}
}
using Microsoft.Win32;
using System;
using System.Collections.Generic;
using System.Diagnostics;
using System.Linq;
using System.Runtime.InteropServices;
using System.Text;
using System.Threading.Tasks;
using System.Windows.Forms;namespace Util
{public class Hook : IDisposable{public delegate int HookProc(int nCode, int wParam, IntPtr lParam);static int hHook = 0;public const int WH_KEYBOARD_LL = 13;HookProc KeyBoardHookProcedure;[StructLayout(LayoutKind.Sequential)]public class KeyBoardHookStruct{public int vkCode;public int scanCode;public int flags;public int time;public int dwExtraInfo;}[DllImport("user32.dll")]public static extern int SetWindowsHookEx(int idHook, HookProc lpfn, IntPtr hInstance, int threadId);[DllImport("user32.dll", CharSet = CharSet.Auto, CallingConvention = CallingConvention.StdCall)]public static extern bool UnhookWindowsHookEx(int idHook);[DllImport("user32.dll")]public static extern int CallNextHookEx(int idHook, int nCode, int wParam, IntPtr lParam);[DllImport("kernel32.dll")]public static extern IntPtr GetModuleHandle(string name);public void Start(){// 安装键盘钩子 if (hHook == 0){KeyBoardHookProcedure = new HookProc(KeyBoardHookProc);hHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyBoardHookProcedure, GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), 0);//如果设置钩子失败. if (hHook == 0)Close();else{RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Policies\System", true);if (key == null)//如果该项不存在的话,则创建该项key = Registry.CurrentUser.CreateSubKey(@"Software\Microsoft\Windows\CurrentVersion\Policies\System");key.SetValue("DisableTaskMgr", 1, RegistryValueKind.DWord);key.Close();}}}public void Close(){bool retKeyboard = true;if (hHook != 0){retKeyboard = UnhookWindowsHookEx(hHook);hHook = 0;}//如果去掉钩子失败. //if (!retKeyboard) throw new Exception("UnhookWindowsHookEx failed.");RegistryKey key = Registry.CurrentUser.OpenSubKey(@"Software\Microsoft\Windows\CurrentVersion\Policies\System", true);if (key != null){key.DeleteValue("DisableTaskMgr", false);key.Close();}}public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam){if (nCode >= 0){KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));if (kbh.vkCode == 91) // 截获左win(开始菜单键) return 1;if (kbh.vkCode == 92)// 截获右win return 1;if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control) //截获Ctrl+Esc return 1;if (kbh.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+f4 return 1;if (kbh.vkCode == (int)Keys.Tab && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+tab return 1;if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Shift) //截获Ctrl+Shift+Esc return 1;if (kbh.vkCode == (int)Keys.Space && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+空格 return 1;if (kbh.vkCode == 241)                  //截获F1 return 1; if (kbh.vkCode == (int)Keys.Control && kbh.vkCode == (int)Keys.Alt && kbh.vkCode == (int)Keys.Delete)return 1;if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt + (int)Keys.Delete)      //截获Ctrl+Alt+Delete return 1;if ((int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Shift)      //截获Ctrl+Shift return 1;}return CallNextHookEx(hHook, nCode, wParam, lParam);}#region IDisposable 成员public void Dispose(){Close();}#endregion}
}

C#挂机锁(禁用任务管理器,禁用windows键和组合键alt+f4等等)相关推荐

  1. Windows常用快捷组合键整理Dos命令基础集合

    一.Windows常用快捷组合键 组合键 Ctrl+C :复制 Ctrl+V :粘贴 Ctrl+A :全选 Ctrl+X :剪贴 Ctrl+Z :撤销 Ctrl+S :保存 快捷功能键 Alt+F4/ ...

  2. 中英文标点符号切换的组合键_最全的键盘各键及组合键功能说明,好好学习

    键盘是最常用的输入设备,通过键盘可以将汉字.英文字母.数字.标点符号等输入到计算机中,从而向计算机发出命令.输入数据.那么键盘分为几个功能区?各键的功能是什么呢?组合键又有什么功能呢?下面就分别予以说 ...

  3. 中英文标点符号切换的组合键_最全的键盘各键及组合键功能说明,建议收藏

    点击上面"蓝字"关注人民书写 键盘是最常用的输入设备,通过键盘可以将汉字.英文字母.数字.标点符号等输入到计算机中,从而向计算机发出命令.输入数据.那么键盘分为几个功能区?各键的功 ...

  4. js简单的设置快捷键,hotkeys捕获键盘键和组合键的输入

    设置快捷键 这是一个强健的 Javascript 库用于捕获键盘输入和输入的组合键,它没有依赖,压缩只有只有(~3kb). hotkeys on Github hotkeys预览 __ __ __ | ...

  5. windows命令大全_必收藏!电脑快捷键、组合键大全

    键盘快捷键使用大全所谓快捷键就是使用键盘上某一个或某几个键的组合完成一条功能命令,从而达到提高操作速度的目的.下面为大家介绍一些常用快捷键的使用和功能.希望这些电脑快捷键大全可以给用户带来便捷的上网体 ...

  6. android 点击返回键home键,appium怎么按下系统按键?如按下返回键、home键等等

    ava_client3.0版本以后使用pressKeyCode方法,之前的版本使用sendKeyEvent方法 1. 返回:driver.pressKeyCode(AndroidKeyCode.BAC ...

  7. Android 键盘键名和键值列表

    电话键   KEYCODE_CALL 拨号键 5 KEYCODE_ENDCALL 挂机键 6 KEYCODE_HOME 按键Home 3 KEYCODE_MENU 菜单键 82 KEYCODE_BAC ...

  8. Android 键盘键名和键值列表

    转载自:https://blog.csdn.net/mazhidong/article/details/79567306 Android 键盘键名和键值列表 小小小程序元 2018-03-15 14: ...

  9. Mac下完美利用雷蛇鼠标的多个功能按键(解决雷蛇Win键组合键无法映射问题)

    雷蛇鼠标有很多可编程的功能按钮,在Windows下这些功能按键很好用.在Mac下雷蛇的驱动程序真不咋地. 我的鼠标有板载功能的,可以先在Windows下设置好每个按键的功能,在Mac下面不安装任何软件 ...

最新文章

  1. eclipse实用快捷键
  2. 微信小程序 点击卡片切换 动画效果
  3. shell脚本api接口考虑并发问题的可行性操作
  4. 物联网的层次结构如何划分?
  5. 批次管理相关事务代码
  6. 简明代码介绍类激活图CAM, GradCAM, GradCAM++
  7. HTML5_1 笔记
  8. 简单入门——深度学习笔记(Part II)
  9. Error: listen EADDRINUSE: address already in use :::8080
  10. java线程状态_java并发编程之线程状态
  11. 深入探索 IBM 数据分析和预测软件 - PASW Modeler
  12. Storm介绍实际开发注意事项
  13. DOCTYPE用法详解
  14. hdu-acm steps Common Subsequence
  15. 高效办公|用一套键鼠控制两台电脑解决方案
  16. JavaEE项目 Web聊天室(JSP实现)
  17. 今日新闻快讯摘要十条
  18. 值得信赖的数据同步备份软件 -Allway Sync 安全又可靠,简单又易用!
  19. 苹果手机服务器找不到,电脑找不到苹果手机热点
  20. centos7 卸载docker

热门文章

  1. mysql memo_Mysql中的数据类型
  2. Android Preference 的布局思考
  3. 在php中标签input用法,html input标签的属性有哪些?input标签的用法总结(附实例)...
  4. 网站互点排名掉了网站互点排名掉了网站互点_网站随意改版,是否会对网站造成降权等影响?...
  5. android verticalviewpager 下拉刷新 上拉加载_设计规范 | 详解组件控件结构体系:加载类...
  6. 我为什么从来不炒股?
  7. java 用折半查找,java折半查找算法
  8. PX4 磁罗盘干扰分析
  9. px4添加遥控器开关快捷校准磁罗盘
  10. 工信部部长苗圩:今年我国部分地区将发放5G临时牌照...