从哪里获得在C#键盘钩子的键码 [英] where to get the keycode for keyboard hook in c#

查看:288
本文介绍了从哪里获得在C#键盘钩子的键码的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我使用下面的代码以关闭键盘组合挂钩。
我得到这个代码,而我上网的网。
我想知道的键码键盘按键的列表。 [lParam.vkCode == ???]
请给我提供的链接进行,谢谢..

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  
}

}


推荐答案

Pinvoke.net 已经将它们复制粘贴准备好了。

Pinvoke.net has them copy-paste ready.

这篇关于从哪里获得在C#键盘钩子的键码的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆