tags:

views:

620

answers:

2

I am using the below code to disable the keyboard combination hooks. I got this code while i surfed the net. I want to know the list of keycodes for the keyboard keys. [lParam.vkCode == ???] Please provide me the link for that, Thanks..

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  
}

}
+5  A: 

Start by looking at the definition of the callback LowLevelKeyboardProc.
Then examine the definition of the struct that is your lparam.
From there you can see that vkcode is a virtual key code. There is a list of those on MSDN as well.

EDIT: As per comment, updated link to point to Windows Keyboard Input section of MSDN rather than the Windows CE Keyboard Input section of MSDN.

Hamish Smith
I would recommend going for this list: http://msdn.microsoft.com/de-de/ms645540%28en-us,VS.85%29.aspxThe other is for Windows CE ;)
Oliver Hanappi
+2  A: 

Pinvoke.net has them copy-paste ready.

Factor Mystic