Событие Keydown, когда форма не активна

Как я могу захватить событие Keydown формы, которая не активна?

Я нашел ссылки на ProcessKeyDown но я не мог найти никакой помощи в этом.

5 ответов

Пожалуйста, установите KeyPreview формы на true. Сначала выберите форму и нажмите клавишу F4, она откроет окно свойств и их KeyPreview и установите его в значение true.

Вы можете установить низкоуровневую клавиатуру, используя SetWindowsHookEx() слушать события нажатия клавиш.

Щелкните правой кнопкой мыши на форме и свойствах cilck, тогда будет кнопка flash, она предназначена для событий для этого объекта. Найти их событие Keypress. просто нажмите на столбец, соответствующий этому событию. Это создаст событие для нажатия клавиш.

Для документации и помощи, проверьте эту ссылку.

События нажатия клавиш отправляются только тем элементам управления, которые имеют фокус ввода. Вы можете использовать свойство Control.HasFocus, чтобы определить, имеет ли ваш элемент управления фокус или нет. Используйте метод Control.Focus(), чтобы придать фокус управления.

Если то, что вы хотите сделать, это вызвать некоторый код в вашей программе после нажатия клавиш в операционной системе относительно того, активна ли форма или нет, тогда вы можете использовать метод, описанный в этой статье:

Обработка глобальных мышиных и клавиатурных хуков в C#

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

Program.cs

Form1.cs

Заметьте, что я не вызывал Application.Run(); с новым параметром Form1(), чтобы приложение работало, но не было видно на экране. Чтобы завершить программу, вы должны нажать CTRL+SHIFT+ESC, перейти на страницу процессов и завершить процесс вручную.

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