У меня следующая проблема в приложении WinForms. Я пытаюсь реализовать горячие клавиши, и мне нужно обрабатывать ключевые сообщения всякий раз, когда элемент управления активен, независимо от того, находится ли фокус на текстовом поле в этом элементе управления и т. Д.
Переопределение ProcessCmdKey прекрасно работает для этого и делает именно то, что я хочу, за одним исключением:
Если пользователь нажимает клавишу и удерживает ее нажатой, ProcessCmdKey продолжает запускать события WM_KEYDOWN.
Однако я хочу добиться того, чтобы пользователь снова отпустил кнопку до того, как сработает другое действие горячей клавиши (поэтому, если кто-то сядет на клавиатуру, это не вызовет непрерывных событий горячих клавиш).
Однако я не могу найти, где перехватить события WM_KEYUP, чтобы я мог установить флаг, если он должен снова обрабатывать сообщения ProcessCmdKey?
Кто-нибудь может здесь помочь?
Спасибо,
Том