RegisterHotkey блокирует все другие горячие клавиши в системе - PullRequest
0 голосов
/ 16 марта 2012

Я создал горячие клавиши в своем приложении с помощью функции RegisterHotkey, например:

[DllImport("user32.dll")]
public static extern bool RegisterHotKey(IntPtr hWnd, int id, int fsModifiers, int vlc);
...
RegisterHotKey(FormHandle, HOTSAVE, MOD_CONTROL, (int)'S');

Здесь FormHandle - это дескриптор основной формы приложения, HOTSAVE - это константа -идентификатор горячей клавиши.Проблема в том, что мое приложение получает сообщения горячих клавиш, даже когда оно не в фокусе, что не позволяет другим приложениям обрабатывать их горячие клавиши (например, Ctrl+S в Блокноте не будет работать).

Может кто-нибудь указать, гдепроблема в?Благодаря.

1 Ответ

7 голосов
/ 16 марта 2012

Вы путаете горячие клавиши с клавишными ускорителями.Горячие клавиши всегда глобальные, поэтому их нужно регистрировать.

Клавиатурные ускорители, однако, специфичны для процесса / окна / диалога и обычно хранятся в ресурсах приложения.

Подробнее о клавиатурных ускорителях здесь

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