Использование программируемых клавиш в 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 здесь). Больше, чем это, требует, чтобы определенные драйверы поставщика снова и для тех кнопок были сопоставлены.

Другие вопросы по тегам