Зарегистрировать несколько глобальных горячих клавиш в C#

Возможный дубликат:
Зарегистрируйте более одной горячей клавиши с помощью RegisterHotKey

Извините, но я действительно долго гуглил, и у меня не было четкого кода!

Я хочу знать, как зарегистрировать глобальные горячие клавиши в С#, используя это:

Win32.RegisterHotKey(hWndSource.Handle, add, 
                     Win32.MOD_CONTROL | Win32.MOD_SHIFT, Win32.VK_KEY_D);

И самое главное, как захватить несколько горячих клавиш.

Допустим, я хочу, чтобы нажатия клавиш Ctrl+E делали что-то отличное от того, что должно делать Ctrl+R.


person blackgh    schedule 26.10.2012    source источник


Ответы (1)


Посмотрите мое довольно устаревшее, но (я думаю) все еще работающее решение с использованием Keyboard Hooks, позволяющее вам создать хук, назначить сочетание клавиш и зафиксировать его как стандартное событие .NET:

hook = new KeyboardHook();
hook.AddFilter(Keys.E, true /* Ctrl */, false /* Alt */, false /* Shift */);
hook.KeyPressed +=new KeyboardHookEventHandler(hook_KeyPressed);
hook.Install();

(использование трех логических параметров далеко не элегантно, и сегодня я бы сделал это с перечислением Flags. Мои извинения)

Источник находится здесь: http://weblogs.asp.net/avnerk/archive/2005/10/06/by-hook-or-by-crook.aspx

person Avner Shahar-Kashtan    schedule 26.10.2012