Хотя, как говорит klartex, для низкоуровневого хука клавиатуры / мыши не требуется DLL (в отличие от всех других типов хуков), хук любого вида, безусловно, излишний для того, что ты пытаешьсядля выполнения.
Все, что вам нужно, это RegisterHotKey
функция , которая позволяет зарегистрировать любую клавишу (или комбинацию клавиш) как общесистемную горячую клавишу,Это удовлетворяет вашему требованию быть в состоянии забирать нажатия клавиш, даже когда ваше приложение не в фокусе.
В качестве бонуса, RegisterHotKey
не требует DLL, и при этом она не является "тяжелой" как системаКрючокКрючки негативно влияют на производительность;вы не должны видеть это с RegisterHotKey
.
После того, как вы зарегистрировали горячую клавишу, вызвав функцию, вы обрабатываете WM_HOTKEY
сообщения внутри оконной процедуры вашего приложения.Когда вы закончите, убедитесь, что вы вызываете функцию UnregisterHotKey
, чтобы отменить регистрацию вашего приложения для обработки этой горячей клавиши.
Единственное предостережение здесь упоминается в документации:
Клавиша F12 зарезервирована для использования отладчиком постоянно, поэтому ее не следует регистрировать как горячую клавишу.Даже если вы не отлаживаете приложение, F12 зарезервировано на тот случай, если отладчик режима ядра или отладчик «точно в срок».
Но та же проблема может возникнуть, если вы устанавливаетенизкоуровневый крючок для клавиатуры. F12 просто не подходит для выбора, независимо от приложения.Если вам абсолютно необходимо, используйте его на свой страх и риск.