Как зарегистрировать собственное сочетание клавиш для приложения Windows

Я хочу создать служебное приложение Windows, которое можно вызывать в любое время из любого другого приложения с помощью сочетания клавиш, например:

Win+T

Ctrl+T

Alt+T

Ctrl+ Alt+T

Ctrl+ Shift+T

Какие комбинации клавиш я могу использовать и как настроить их в реестре Windows?

(Если ярлык используется другим приложением, он, конечно, не должен работать.)

Ответов (4)

Решение

Возможность делать это программно, когда запуск вашего приложения вызывает этот Windows API:

RegisterHotKey(IntPtr hwnd, int id, int fsModifiers, int vk);

И чтобы отменить регистрацию, вызовите этот API:

UnregisterHotKey(IntPtr hwnd, int id);

Оба существуют в user32 API

http://www.pinvoke.net/search.aspx?search=RegisterHotKey&namespace=[All]

Если ваше приложение (или его ярлык) доступно на вашем рабочем столе, вы можете щелкнуть правой кнопкой мыши, чтобы открыть контекстное меню, выбрать «Свойства» и ввести там комбинацию клавиш. Просто щелкните текстовое поле «Сочетание клавиш» и нажмите нужное сочетание клавиш.

Я назначил WIN+ Cсвоему калькулятору и WIN+ Vсвоему регулятору громкости.

Если вам нужен более сложный сценарий того, что предлагает ярлык оболочки, вы должны начать с чтения Win32 Hooks and Hooks Overview .

В частности, вам нужно добавить WH_KEYBOARD ловушку с помощью SetWindowsHookExфункции. UnhookWindowsHookExКогда вы закончите, вам также нужно отцепить крючок .

Есть старая статья от Дино Эспозито о том, как создавать хуки Windows в .NET через какое-то взаимодействие с Win32.

Я боюсь, что это не то, что вы можете сделать, просто установив значения в реестре, это, как было указано в других ответах, необходимо для вызова некоторых подпрограмм Windows API для достижения этой цели.