如何用钩子自由锁定一个键盘上的任意一个键
我已经可以实现锁定一些特定的键,如下:
public static int KeyboardHookProc(int nCode, Int32 wParam, IntPtr lParam)
{
if (nCode >= 0)
{
//线程键盘钩子判断是否按下键
//Keys keyData = (Keys)wParam;
//if(lParam.ToInt32() > 0)
//{
// // 键盘按下
//}
//if(lParam.ToInt32() < 0)
//{
// // 键盘抬起
//}
//********************************
//全局键盘钩子判断是否按下键
//wParam = = 0x100 // 键盘按下
//wParam = = 0x101 // 键盘抬起
KeyMSG kbh = (KeyMSG)Marshal.PtrToStructure(lParam, typeof(KeyMSG));
//锁定键盘描述.以下只给出部分内容,其它类似。
//锁定A-C
if (kbh.vkCode == (int)Keys.A) { return 1; }
if (kbh.vkCode == (int)Keys.B) { return 1; }
if (kbh.vkCode == (int)Keys.C) { return 1; }
//锁定0-2键
if (kbh.vkCode == (int)Keys.D0) { return 1; }
if (kbh.vkCode == (int)Keys.D1) { return 1; }
if (kbh.vkCode == (int)Keys.D2) { return 1; }
//锁定数字键盘上的0-2键
if (kbh.vkCode == (int)Keys.NumPad0) { return 1; }
if (kbh.vkCode == (int)Keys.NumPad1) { return 1; }
if (kbh.vkCode == (int)Keys.NumPad2) { return 1; }
//锁定F1-F3
if (kbh.vkCode == (int)Keys.F1) { return 1; }
if (kbh.vkCode == (int)Keys.F2) { return 1; }
if (kbh.vkCode == (int)Keys.F3) { return 1; }
//如果返回1,则结束消息,不再传递。
//如果返回0或调用CallNextHookEx函数,则消息出了这个钩子继续往下传递,
//也就是传给消息真正的接受者
}
return CallNextHookEx(hKeyboardHook, nCode, wParam, lParam);
}
这只是锁定了0.1.2和abc,如果说我要锁定自己在控制端键盘上输入的任意一个键(注意,是一个键就行),我应该怎么做呢?