在c#中获取键盘钩子的键码的位置

我使用以下代码禁用键盘组合挂钩。 我上网的时候得到了这个代码。 我想知道键盘键的键码列表。 [lParam.vkCode == ???]请给我链接,谢谢..

namespace BlockShortcuts { public class DisableKeys { private delegate int LowLevelKeyboardProcDelegate(int nCode, int wParam, ref KBDLLHOOKSTRUCT lParam); [DllImport("user32.dll", EntryPoint = "SetWindowsHookExA", CharSet = CharSet.Ansi)] private static extern int SetWindowsHookEx(int idHook, LowLevelKeyboardProcDelegate lpfn, int hMod, int dwThreadId); [DllImport("user32.dll")] private static extern int UnhookWindowsHookEx(int hHook); [DllImport("user32.dll", EntryPoint = "CallNextHookEx", CharSet = CharSet.Ansi)] private static extern int CallNextHookEx(int hHook, int nCode, int wParam, ref KBDLLHOOKSTRUCT lParam); const int WH_KEYBOARD_LL = 13; private int intLLKey; private struct KBDLLHOOKSTRUCT { public int vkCode; int scanCode; public int flags; int time; int dwExtraInfo; } private int LowLevelKeyboardProc(int nCode, int wParam, ref KBDLLHOOKSTRUCT lParam) { bool blnEat = false; switch (wParam) { case 256: case 257: case 260: case 261: //Alt+Tab, Alt+Esc, Ctrl+Esc, Windows Key if (((lParam.vkCode == 9) && (lParam.flags == 32)) || ((lParam.vkCode == 27) && (lParam.flags == 32)) || ((lParam.vkCode == 27) && (lParam.flags == 0)) || ((lParam.vkCode == 91) && (lParam.flags == 1)) || ((lParam.vkCode == 92) && (lParam.flags == 1)) || ((true) && (lParam.flags == 32))) { blnEat = true; } break; } if (blnEat) return 1; else return CallNextHookEx(0, nCode, wParam, ref lParam); } public void DisableKeyboardHook() { intLLKey = SetWindowsHookEx(WH_KEYBOARD_LL, new LowLevelKeyboardProcDelegate(LowLevelKeyboardProc), System.Runtime.InteropServices.Marshal.GetHINSTANCE(System.Reflection.Assembly.GetExecutingAssembly().GetModules()[0]).ToInt32(), 0); } private void ReleaseKeyboardHook() { intLLKey = UnhookWindowsHookEx(intLLKey); } #endregion } } 

Pinvoke.net让他们准备好复制粘贴。

首先看一下回调LowLevelKeyboardProc的定义。
然后检查作为你的lparam的结构的定义。
从那里你可以看到vkcode是一个虚拟密钥代码。 MSDN上也列出了这些列表 。

编辑:根据评论,更新链接指向MSDN的Windows键盘输入部分,而不是MSDN的Windows CE键盘输入部分。