Я хочу предоставить опцию с медиаплеером, над которым я работаю, чтобы клавиши мультимедиа работали, даже когда они свернуты.Каков наилучший способ для захвата и обработки этих ключевых событий в C # без фокуса?Это вообще возможно?
Я не думаю, что есть простой способ сделать это, но this (Использование оконных сообщений для реализации глобальных системных хуков в C #) проект может помочь.Я добавил ниже код
_GlobalHooks.Keyboard.KeyboardEvent += (w, l) => { this.LblMouse.Text = "KEY: " + w.ToInt32().ToString("X8") + " " + l.ToInt32().ToString("X8"); }; _GlobalHooks.Keyboard.Start();
в конструктор Form1 GlobalHookTest и смог отслеживать все события клавиатуры.
Вы можете сделать это, но только с некоторыми глобальными перехватами - исходный код и подробности см.
РЕДАКТИРОВАТЬ:
ОСТЕРЕГАЙТЕСЬ, что некоторые медиа-ключи переводятся в APP_COMMAND сообщения Windows - поэтому вам следует подумать о том, чтобы перехватить их тоже.
APP_COMMAND
ЕСЛИ вы хотите, чтобы ваш медиаплеер автоматически запускался при нажатии кнопки (СМИ) см. ссылки здесь .
Использование глобальных перехватов клавиатуры ( Обработка глобальных перехватов мыши и клавиатуры в C # )
Просто создайте перехват при запуске приложения / формы.Вы можете установить KeyEventHandlers для глобального ключа вверх, вниз и нажмите события.Затем вы можете проверить, является ли это комбинация клавиш, которую вы ищете.
Для этой задачи я реализовал это решение:
http://blogs.msdn.com/b/toub/archive/2006/05/03/589423.aspx