Захват событий мыши / клавиатуры вне формы (приложение работает в фоновом режиме) - PullRequest
15 голосов
/ 22 июля 2010

У меня есть приложение, которое работает в фоновом режиме (свернутый / панель задач). Мне нужно уметь обнаруживать активность мыши (щелчки, движение), а также клавиатурную активность.

Каков наилучший способ сделать это, учитывая ограничение, что мое окно не "сфокусировано"?

Ответы [ 2 ]

14 голосов
/ 06 октября 2011

Взгляните на эту библиотеку http://globalmousekeyhook.codeplex.com/. Это 100% управляемый код C # для установки глобальных перехватов мыши и клавиатуры.Он оборачивает низкоуровневые хуки в обычные события окон клавиатуры и мыши.

10 голосов
/ 22 июля 2010

Волшебные слова - это хуки окон. Они создаются с помощью вызова p / invoke к SetWindowsHookEx. Вы можете установить ловушку для мониторинга, среди прочего, событий клавиатуры и мыши. Обычно такие хуки являются локальными для приложения, но вы также можете создавать глобальные хуки. Microsoft KB показывает как.

Однако учтите, что не все типы глобальных хуков можно использовать из .NET. В частности, есть только два, которые вы можете использовать : низкоуровневые крючки для клавиатуры и мыши, известные как WH_KEYBOARD_LL и WH_MOUSE_LL. К счастью, это именно то, что вам нужно.

...