Подтвердить что ты не робот

Лучший способ решить глобальную обработку горячих клавиш в С#?

Возможный дубликат:
Как зарегистрировать глобальную горячую клавишу, чтобы сказать CTRL + SHIFT + (LETTER), используя WPF и .NET 3.5?

Я хотел бы иметь несколько глобальных горячих клавиш в своем новом приложении (для управления приложением из любого места в окнах), и все данные источники/решения, которые я нашел в Интернете, похоже, предоставляют своеобразное решение для хромания (либо решения только для одного g.hotkey, либо решения, которые во время работы создают раздражающие задержки мыши на экране).

Кто-нибудь знает о ресурсе, который может помочь мне достичь этого, чему я могу научиться? Что-нибудь?

Спасибо!:)

4b9b3361

Ответ 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); 

Обратите внимание, как вы можете установить различные лямбда для разных горячих клавиш

Ответ 3

Я бы справился с этим, используя P/Invoke, чтобы вызвать RegisterHotKey() для каждой горячей клавиши, а затем использовать NativeForm (при условии, что вы используете WinForms), чтобы получать уведомление об сообщении WM_HOTKEY. Это должно содержать большую часть вашего кода горячих клавиш в одном месте.