如何用键盘钩子屏蔽系统功能键

问题描述

如题。想把系统的所有功能键屏蔽,哪位大虾有代码可以提供参考的,先谢谢了。PS:网上找了很多类似如下的代码,都是用键盘钩子,但没有一个可以真正实现屏蔽的。不知道是不是我哪里弄错了,汗!通过API屏蔽[DllImport("user32.dll",SetLastError=true)]publicstaticexternboolRegisterHotKey(IntPtrhWnd,intid,intfsModifiers,//alt=1,none=0,win=8;KeysvirtualKey);[DllImport("user32.dll",SetLastError=true)]publicstaticexternboolUnregisterHotKey(IntPtrhWnd,intid);protectedoverridevoidWndProc(refMessagem){constintWM_HOTKEY=0x0312;switch(m.Msg){caseWM_HOTKEY:ProcessHotkey();break;}base.WndProc(refm);}voidProcessHotkey(){}方法二:usingSystem;usingSystem.Collections.Generic;usingSystem.ComponentModel;usingSystem.Data;usingSystem.Drawing;usingSystem.Text;usingSystem.Windows.Forms;usingSystem.Runtime.InteropServices;usingSystem.Reflection;namespaceWindowsApplication10{publicpartialclassForm1:Form{[DllImport("user32.dll")]publicstaticexternintSetWindowsHookEx(intidHook,HookProclpfn,IntPtrhInstance,intthreadId);[DllImport("user32.dll")]publicstaticexternboolUnhookWindowsHookEx(intidHook);[DllImport("user32.dll")]publicstaticexternintCallNextHookEx(intidHook,intnCode,Int32wParam,IntPtrlParam);publicdelegateintHookProc(intnCode,Int32wParam,IntPtrlParam);staticinthKeyboardHook=0;HookProcKeyboardHookProcedure;publicForm1(){InitializeComponent();}privatevoidForm1_Load(objectsender,EventArgse){HookStart();}privatevoidForm1_FormClosing(objectsender,FormClosingEventArgse){HookStop();}publicvoidHookStart(){if(hKeyboardHook==0){KeyboardHookProcedure=newHookProc(KeyboardHookProc);hKeyboardHook=SetWindowsHookEx(13,KeyboardHookProcedure,Marshal.GetHINSTANCE(Assembly.GetExecutingAssembly().GetModules()[0]),0);if(hKeyboardHook==0){HookStop();thrownewException("SetWindowsHookExfailed.");}}}privateintKeyboardHookProc(intnCode,Int32wParam,IntPtrlParam){return1;}publicvoidHookStop(){boolretKeyboard=true;if(hKeyboardHook!=0){retKeyboard=UnhookWindowsHookEx(hKeyboardHook);hKeyboardHook=0;}if(!(retKeyboard))thrownewException("UnhookWindowsHookExfailed.");}}}

解决方案

解决方案二:
C#对底层的支持不太好,想屏蔽功能键,修改注册表吧。
解决方案三:
网络上关于修改注册表的是这个:HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesExplorer,新建一个双字节值,键名为“NoWindowsKeys”,键值为"1",但是这种做法好像不行
解决方案四:
[HKEY_CURRENT_USERSoftwareMicrosoftWindowsCurrentVersionPoliciesSystem]  //下的DisableTaskmgr项的值设为"1”来屏蔽任务管理器。好像这种方法也不行
解决方案五:
该回复于2012-04-24 14:08:49被版主删除

时间: 2024-08-07 10:21:52

如何用键盘钩子屏蔽系统功能键的相关文章

利用底层键盘钩子拦载任意按键(回调版)

前段时间我曾经写过一篇<利用底层键盘钩子屏蔽任意按键>,并放到了我的blog上.这 篇文章的题目中把"屏蔽"改成了"拦截",显然要比以前的版本强 一些了.对于以前写的那个DLL,有一个不够理想的地方,就是仅仅能实现屏蔽.如果想在屏 蔽之前加入一些"小动作",就只能修改DLL,在LowLevelKeyboardProc函数中添 加代码,实现新的功能.但这样显然不够灵活,这样的DLL也不具备一般性了.所以我自然而 然地想到了回调,Wind

利用键盘钩子开发按键发音程序

本文配套源码 一.前言 一日,看见我妈正在用电脑练习打字,频频低头看键盘,我想:要是键盘能发音的话,不就可以方便她养成"盲打"的好习惯吗?光想不做可不行,开始行动(您可千万别急着去 拿工具箱啊^_^)... 按键能发音,其关键就是让程序能够知道当前键盘上是哪个键被按下,并播 放相应的声音,自己的程序当然不在话下,那么其它程序当前按下哪个键如何得知呢?利用键盘钩子便可 以很好地解决. 下载本文的全部源代码 大小:552K 二.挂钩(HOOK)的基本原理 WINDOWS调用挂接的回调函数时

win32汇编-WIN32汇编键盘钩子截获全部键盘

问题描述 WIN32汇编键盘钩子截获全部键盘 普通的键盘钩子只能截获普通的键盘操作,但是不能截获到shift等系统键,求问怎么样截获所有的键盘操作 解决方案 http://www.cnblogs.com/zudn/archive/2010/12/15/1906374.html 解决方案二: win32程序测试键盘钩子win32程序测试键盘钩子

winform中继承base实现屏蔽系统热键,求源码

问题描述 winform中继承base实现屏蔽系统热键,求源码 近期想做一个锁屏,采用键盘钩子在win7上一直不完美,听说继承base类可以实现,但是不知道具体怎么实现屏蔽系统热键,比如alt+f4,任务管理器等等啊,求源码或详细思路,谢谢 解决方案 继承base实现屏蔽系统热键 没这么神奇,只能吃掉本窗体的键盘消息的响应. 解决方案二: 任务管理器可以通过组策略禁用 阻止alt+f4只要在Closing事件中写e.cancel=true即可.

vc++6 0-全局键盘钩子函数的回调函数有时无效

问题描述 全局键盘钩子函数的回调函数有时无效 DLL代码: myHooke.c #include "myHooke.h" #include <windows.h> #include <winuser.h> #include <stdlib.h> #include <stdio.h> int ndown = 0; HHOOK hhkHook = NULL; //定义钩子句柄 HINSTANCE hInstance = NULL; //程序实

vb.net 全局键盘钩子?

问题描述 这段键盘钩子,在窗口里怎么调用啊?ImportsSystem.Reflection,System.Threading,System.ComponentModel,System.Runtime.InteropServices'''<summary>本类可以在.NET环境下使用系统键盘与鼠标钩子</summary>PublicClassSystemHook定义结构API声明导入常量声明事件委托处理PrivatehMouseHookAsIntegerPrivatehKeyboa

windows api学习笔记-键盘钩子

DLL项目的头文件 #ifdef KEYHOOKLIB_EXPORT //此宏将在CPP文件中定义 #define KEYHOOKLIB_API __declspec(dllexport) #else #define KEYHOOKLIB_API __declspec(dllimport) #endif #define HM_KEY WM_USER+101 BOOL KEYHOOKLIB_API WINAPI SetKeyHook(BOOL bInstall,DWORD dwThreadId =

网络布线的屏蔽与非屏蔽系统简介

当今综合布线系统市场上,有众多国内及国外的品牌,铜缆有超五类.六类及七类之分,还有屏蔽及非屏蔽之分.对于铜缆的六类.七类,大家都会知道,数字越大,线缆的性能越好,而对于屏蔽电缆和非屏蔽之争,在业界已经是由来已久.面对用户对于网络安全的日益重视,屏蔽系统发展到今天,已经被越来越多的用户所接受和采用,并日益彰显其活力.针对综合布线系统市场的发展,如何为客户提供更好更完善的综合系统解决方案,已被业内更多人士所关注和重视. 作为综合布线系统厂商,康宁提供屏蔽与非屏蔽布线系统的端到端产品,对于使用屏蔽还是

如何用命令查看win7系统激活信息

  如何用命令查看win7系统激活信息 注:以下命令使用必须以管理员权限运行. 1.首先,我们需要打开系统"运行"窗口,按"Win+R"组合键快速打开运行,在输入框内输入"Winver"按回车,即可调出Win7的详细版本信息; 2.那么如何查看更详细的Windows7激活信息呢?下面小编为大家提供了几种常用的"Slmgr.vbs"命令,使用此命令可以看到系统各种参数; 3.在"运行"中输入"slm