Захват событий клавиатуры в C # windows service - PullRequest
0 голосов
/ 12 мая 2019

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

Моя цель - отправить электронное письмо, если была нажата определенная серия клавиш. Например, если вы нажимаете h-e-l-l-o, независимо от того, где вы набираете его даже на рабочем столе, программа должна отправить электронное письмо.

Кроме того, я могу реализовать это по-другому. Мне нужна программа, которая работает в фоновом режиме и что-то делает при нажатии клавиши.

Как я могу сделать такую ​​вещь? Был бы полезен пример.

Ответы [ 2 ]

1 голос
/ 12 мая 2019

Как кто-то уже прокомментировал, служба Windows не имеет окна переднего плана, которое может принимать фокус клавиатуры или сообщения клавиатуры Windows.Таким образом, единственный способ добиться именно того, что вам нужно, - это использовать низкоуровневый хук событий для получения событий клавиатуры.

Обратите внимание, однако, что это общесистемные события и вашиобслуживание может быть затоплено с ними.Они полезны в таких приложениях, как программы чтения с экрана и другие вспомогательные технологии, но я бы порекомендовал попытаться подумать, есть ли какой-то другой способ сделать то, что вы хотите сделать, прежде чем использовать этот подход.Например, вы можете просто запустить приложение в системном трее и подписаться на сообщения WM_HOTKEY через вызовы на RegisterHotKey ?

Вот пример низкого уровняклавиатурный крючок на C # .

0 голосов
/ 13 мая 2019

Лучшее решение, которое я нашел, это это

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...