问题描述
如题。想把系统的所有功能键屏蔽,哪位大虾有代码可以提供参考的,先谢谢了。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被版主删除