Использование программируемых клавиш в 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, но ничего не получил для своих кнопок клавиатуры.
1 ответ
Программируемые клавиши на клавиатуре, как правило, используют специальные API, для которых требуется программное обеспечение драйвера производителя. Это программное обеспечение отображает нажатие клавиши на действие (или последовательность действий), которое переводится в стандартные операции. Например, нажатие кнопки X может соответствовать нажатию кнопки A
нажмите пять раз подряд, и ваше программное обеспечение должно быть в состоянии принять эти 5 нажатий.
Кнопки мыши довольно общие, и я считаю, что Windows API допускает 8 стандартных кнопок (см. Ссылку на API здесь). Больше, чем это, требует, чтобы определенные драйверы поставщика снова и для тех кнопок были сопоставлены.