在C#中使用可编程键?

时间:2015-11-23 00:52:19

标签: c# registry hotkeys mousekeyhook

我想创建一个简单的应用程序,在运行时会等待特定的键或键组合,甚至按下鼠标按钮。我正在使用MouseKeyHook API来获取此信息,但是我遇到了一些问题。

这似乎完美无缺,因为我可以将Buttons的字符串值与我保存的内容进行比较。现在,这是真正的问题开始的地方。每当我按下键盘上的任何可编程按钮时,我都没有得到任何输出?为什么呢?

private void GlobalHookKeyPress(object sender, KeyPressEventArgs e)
{
    HotKey.Text = e.KeyChar.ToString();
}

private void GlobalHookMouseDownExt(object sender, MouseEventExtArgs e)
{
    HotKey.Text = e.Button.ToString();
}

当使用MouseKeyHook API挂钩时,我能够获得两个鼠标按钮XButton1和XButton2,但我的键盘按钮没有任何内容。

enter image description here

1 个答案:

答案 0 :(得分:0)

键盘上的可编程键往往使用需要供应商驱动程序软件的特定API。该软件将按键映射到转换为标准操作的动作(或动作序列)。例如,按下按钮X可能对应于连续按下A键五次,并且您的软件应该能够接受这5次按下。

鼠标按钮非常通用,我相信windows API允许8个标准按钮(参见API reference here)。除此之外,还需要特定的供应商驱动程序以及映射这些按钮。