Установка горячей клавиши для всего приложения в C # - PullRequest
7 голосов
/ 07 декабря 2010

Существует сообщение для установки общесистемной глобальной горячей клавиши в C # здесь

Я хочу установить общедоступную горячую клавишу, чтобы пользователь нажимал горячую клавишу на любом дочернем окнеприложение, определенное окно получит и обработает его.

Спасибо.

1 Ответ

6 голосов
/ 07 декабря 2010

Вы можете создать базовую форму для своего приложения и установить для свойства keypreview значение true и обработать событие keydown, чтобы все ваши формы имели одинаковое определение ключа.

Вы также можете использовать следующую процедуру для регистрации горячей клавиши для ваших форм, но в этом методе вам потребуется вызывать один и тот же метод при событии загрузки каждой формы.

protected override bool ProcessCmdKey(ref Message message, Keys keys)
{
    switch (keys)
    {
        case Keys.F2 | Keys.Control:
            //Process action here.
            return false;
    }

    return false;
}

Вы также можете использовать следующие неуправляемые методы из user32.dll, но, конечно, я бы не советовал.

static extern bool RegisterHotKey(IntPtr hWnd, int id, uint fsModifiers, uint virtualKey);
private static extern bool UnregisterHotKey(IntPtr hWnd, int id);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...