屏蔽windows快捷键的方法
- using System;
- using System.Collections.Generic;
- using System.Text;
- using System.Windows.Forms;
- using Microsoft.Win32;
- using System.Runtime.InteropServices;
- using System.Diagnostics;
- namespace TrueLore.GGZYZXJG.Utility
- {
- /// <summary>
- /// 热键屏蔽
- /// </summary>
- public class HookHelper
- {
- //委托
- public delegate int HookProc(int nCode, int wParam, IntPtr lParam);
- static int hHook = ;
- public const int WH_KEYBOARD_LL = ;
- //LowLevel键盘截获,如果是WH_KEYBOARD=2,并不能对系统键盘截取,Acrobat Reader会在你截取之前获得键盘。
- HookProc KeyBoardHookProcedure;
- //键盘Hook结构函数
- [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 int GetCurrentThreadId();
- [DllImport("kernel32.dll")]
- public static extern IntPtr GetModuleHandle(string name);
- public void Hook_Start()
- {
- // 安装键盘钩子
- if (hHook == )
- {
- KeyBoardHookProcedure = new HookProc(KeyBoardHookProc);
- hHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyBoardHookProcedure,
- GetModuleHandle(Process.GetCurrentProcess().MainModule.ModuleName), );
- //KeyBoardHookProcedure = new HookProc(KeyBoardHookProc);
- //IntPtr intPtr = Marshal.GetHINSTANCE(System.Reflection.Assembly.GetExecutingAssembly().GetModules()[0]);
- //hHook = SetWindowsHookEx(WH_KEYBOARD_LL, KeyBoardHookProcedure, intPtr, 0);
- //如果设置钩子失败.
- if (hHook == )
- {
- Hook_Clear();
- }
- GCHandle.Alloc(KeyBoardHookProcedure);
- }
- }
- //取消钩子事件
- public void Hook_Clear()
- {
- bool retKeyboard = true;
- if (hHook != )
- {
- retKeyboard = UnhookWindowsHookEx(hHook);
- hHook = ;
- }
- //如果去掉钩子失败.
- if (!retKeyboard) throw new Exception("UnhookWindowsHookEx failed.");
- }
- //这里可以添加自己想要的信息处理
- public static int KeyBoardHookProc(int nCode, int wParam, IntPtr lParam)
- {
- if (nCode >= )
- {
- KeyBoardHookStruct kbh = (KeyBoardHookStruct)Marshal.PtrToStructure(lParam, typeof(KeyBoardHookStruct));
- if (kbh.vkCode == ) // 截获左win(开始菜单键)
- return ;
- if (kbh.vkCode == )// 截获右win
- return ;
- if (kbh.vkCode == (int)Keys.Escape && (int)Control.ModifierKeys == (int)Keys.Control) //截获Ctrl+Esc
- return ;
- if (kbh.vkCode == (int)Keys.F4 && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+f4
- return ;
- //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 ;
- if (kbh.vkCode == (int)Keys.Space && (int)Control.ModifierKeys == (int)Keys.Alt) //截获alt+空格
- return ;
- if (kbh.vkCode == ) //截获F1
- return ;
- //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 ;
- if (kbh.vkCode == (int)Keys.Space && (int)Control.ModifierKeys == (int)Keys.Control + (int)Keys.Alt) //截获Ctrl+Alt+空格
- return ;
- }
- return CallNextHookEx(hHook, nCode, wParam, lParam);
- }
- public void TaskMgrLocking(bool bLock)
- {
- if (bLock)
- {
- try
- {
- RegistryKey r = Registry.CurrentUser.OpenSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System", true);
- r.SetValue("DisableTaskmgr", ""); //屏蔽任务管理器
- }
- catch
- {
- RegistryKey r = Registry.CurrentUser.CreateSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System");
- r.SetValue("DisableTaskmgr", "");
- }
- }
- else
- {
- Registry.CurrentUser.DeleteSubKey("Software\\Microsoft\\Windows\\CurrentVersion\\Policies\\System");
- }
- }
- }
- }
主程序调用时:
- TrueLore.GGZYZXJG.Utility.HookHelper hook = new TrueLore.GGZYZXJG.Utility.HookHelper();
- hook.Hook_Start(); 屏蔽热键
- //hook.TaskMgrLocking(true); 屏蔽任务管理器
- //hook.Hook_Clear(); 取消屏蔽
屏蔽windows快捷键的方法的更多相关文章
- 设置sublime text2/3中默认预览浏览器快捷键的方法
各位前端大神们,大家在用IDE编辑器的时候喜欢用哪些呢?是Dreamweaver.Zend Studio.editplus又或者是sublime text?今天马浩周给大家就要说说设置sublime ...
- Qt Creator快捷键大全,附快捷键配置方法
一.快捷键配置方法: 进入“工具->选项->环境->键盘”即可配置快捷键. 二.常用默认快捷键: 编号 快捷键 功能 1 Esc 切换到代码编辑状态 2 F1 查看帮助( ...
- 在TC(Total Commander)中添加启动Cygwin快捷键的方法
在TC(Total Commander)中添加启动Cygwin快捷键的方法 1.在Cygwin的安装目录下,增加文件tc-cygwin.bat(例如C:\cygwin-177\tc-cygwin.ba ...
- 详细,Qt Creator快捷键大全,附快捷键配置方法
一.快捷键配置方法: 进入“工具->选项->环境->键盘”即可配置快捷键. 二.常用默认快捷键: 编号 快捷键 功能 1 Esc 切换到代码编辑状态 2 F1 查看帮助(选中某一类或 ...
- windows快捷键十八式(win10)
胖友,如果你的电脑是windows系统,下面这十八招windows快捷键都不会,还敢说你会用windows? 说到windows的快捷键,当然不是只有ctrl+c,ctrl+v这么简单,今天我整理了一 ...
- Capslock+ 键盘党都爱的高效利器 - 让 Windows 快捷键操作更加灵活强大
Capslock+ 键盘党都爱的高效利器 - 让 Windows 快捷键操作更加灵活强大 优化辅助 Windows 2016-06-05 91,167 微博微信QQ空间印象有道邮件 ...
- C# 屏蔽windows功能键
对于触屏的软件来说,我们调出系统键盘以后,我们不想用户回到桌面,这时候我们就需要屏蔽windows键, #region 屏蔽WIN功能键 public delegate int HookProc(in ...
- windows关闭端口方法
windows关闭端口方法 在介绍各种端口的作用前,这里先介绍一下在Windows中如何关闭/打开端口,因为默认的情况下,有很多不安全的或没有什么用的端口是开启的,比如Telnet服务的23端口.FT ...
- 【12】Firefox 快捷键大全及更改和定制快捷键的方法
[12]Firefox 快捷键大全及更改和定制快捷键的方法 答: Firefox 本身没有提供更改和定制快捷键的选项,若有需要,请安装扩展 Keyconfig 来解决. 安装地址如下: Keycon ...
随机推荐
- jquery禁用form表单中的文本框
//禁用form表单中所有的input[文本框.复选框.单选框],select[下拉选],多行文本框[textarea] function disableForm(formId, isDisabled ...
- count(*) 和 count(1)和count(列名)区别
执行效果上: count(*)包括了所有的列,相当于行数,在统计结果的时候,不会忽略列值为NULL count(1)包括了所有列,用1代表代码行,在统计结果的时候,不会忽略列值为NULL cou ...
- [转]MySQL中乐观锁、悲观锁(共享锁、排他锁)简介
InnoDB与MyISAM Mysql 在5.5之前默认使用 MyISAM 存储引擎,之后使用 InnoDB. MyISAM 操作数据都是使用的表锁,你更新一条记录就要锁整个表,导致性能较低,并发不高 ...
- Python中的数组和list
Python的X[y==1, 0] 最近研究逻辑回归,Iris花的经典示例,代码就不全粘贴了,具体代码参看“Iris花逻辑回归与实现” plt.plot(X[y==0, 0], X[y==0,1], ...
- linux zip删除指定文件和追加文件
使用zip命令的-d参数即可删除zip包中的特定文件. 示例:假设有test.zip,包含_code(目录)._code.zip.readme.txt三个文件,现在要删除test.zip中的_code ...
- nusaop 关于webService
用PHP和NuSoap来建立SOAP服务器非常容易.基本上,你只要写出你想要暴露给你的Web services的函数,然后用NuSoap去注册它们就可以了.OK,另外还需要两步才能完成PHP SOAP ...
- 串口转以太客户端(增加uci、可连接多个服务器)
1. 进入barrier_breaker/package/utils文件夹,新建ttl_client 2. 该目录下的Makefile # # Copyright (C) OpenWrt.org # ...
- backgroud 应用减小资源大小和请求数
一,一个典型的应用,利用小图的自动延伸,实现整个网页背景图,充分节约资源宽带.如:汽车之家的404页背景图就是这样 <div style="height: 3000px; backgr ...
- php 直接获取url参数赋值成变量。省去繁琐的获取参数,再一个个赋值
php 直接获取url参数赋值成变量.省去繁琐的获取参数,再一个个赋值 parse_url() 该函数可以解析 URL,返回其组成部分.它的用法如下: array parse_url(string $ ...
- 【AMQ】之JMS概念
1.JMS(Java Message Service)Java消息服务,是Java20几种技术其中之一 2.JMS规范定义了Java中访问消息中间件的接口,但是没有给实现,这个实现就是由第三方使用者来 ...