Как зарегистрировать пользовательское сочетание клавиш для приложения Windows - PullRequest
8 голосов
/ 01 марта 2009

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

Победа + Т

Ctrl + T

Доп. + T

Ctrl + Alt + T

Ctrl + Shift + T

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

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

Ответы [ 4 ]

7 голосов
/ 01 марта 2009

Возможность сделать это программно, когда ваше приложение запускает 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]

1 голос
/ 01 марта 2009

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

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

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

1 голос
/ 01 марта 2009

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

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

0 голосов
/ 30 октября 2009

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...