在 C# 中使用可编程键?

Using programmable keys in C#?

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

这似乎工作得很好,因为我可以将按钮的字符串值与我保存的值进行比较。现在真正的问题开始了。每当我按下键盘上的任何可编程按钮时,我都没有得到任何输出?为什么?

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,但我的键盘按钮却一无所获。

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

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