Захват ключевых событий из службы Windows в C # - PullRequest
2 голосов
/ 23 ноября 2010

Мне нужно написать приложение на C #, которое слушает любые нажатия клавиш.На самом деле у меня есть сканер штрих-кода, отправляющий событие «нажата клавиша», и мне нужно его прослушать ... что он там делает, выходит за рамки моего вопроса.

Мои требования безопасности заключаются в том, что не допускается вход в систему на машине в любой форме или форме И это должно выполняться как служба Windows .Пользователь запустит компьютер и уйдет (т. Е. Не будет сеанса на рабочем столе).

Я предполагаю, что для этого мне придется остаться без управления.

Учитывая, что требования безопасностиэто вообще возможно?Если так, то любые указания о том, с чего начать, были бы великолепны.

Заранее спасибо, Джей

Ответы [ 3 ]

1 голос
/ 23 ноября 2010

Попробуйте подключить клавиатуру и мышь

http://www.codeproject.com/KB/cs/globalhook.aspx

0 голосов
/ 11 августа 2012

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

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

0 голосов
/ 23 ноября 2010

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

http://pinvoke.net/default.aspx/user32.SetWindowsHookEx

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