Лучший способ решить глобальную обработку горячих клавиш в С#?
Возможный дубликат:
Как зарегистрировать глобальную горячую клавишу, чтобы сказать CTRL + SHIFT + (LETTER), используя WPF и .NET 3.5?
Я хотел бы иметь несколько глобальных горячих клавиш в своем новом приложении (для управления приложением из любого места в окнах), и все данные источники/решения, которые я нашел в Интернете, похоже, предоставляют своеобразное решение для хромания (либо решения только для одного g.hotkey, либо решения, которые во время работы создают раздражающие задержки мыши на экране).
Кто-нибудь знает о ресурсе, который может помочь мне достичь этого, чему я могу научиться?
Что-нибудь?
Спасибо!:)
Ответы
Ответ 1
Самое приятное решение, которое я нашел, http://bloggablea.wordpress.com/2007/05/01/global-hotkeys-with-net/
Hotkey hk = new Hotkey();
hk.KeyCode = Keys.1;
hk.Windows = true;
hk.Pressed += delegate { Console.WriteLine("Windows+1 pressed!"); };
hk.Register(myForm);
Обратите внимание, как вы можете установить различные лямбда для разных горячих клавиш
Ответ 2
http://www.codeproject.com/KB/cs/CSLLKeyboardHook.aspx
Если вы не используете .net 3.5.
Ответ 3
Я бы справился с этим, используя P/Invoke, чтобы вызвать RegisterHotKey() для каждой горячей клавиши, а затем использовать NativeForm (при условии, что вы используете WinForms), чтобы получать уведомление об сообщении WM_HOTKEY. Это должно содержать большую часть вашего кода горячих клавиш в одном месте.