Перехват клавиатуры без использования DLL? - PullRequest
0 голосов
/ 19 декабря 2011

Я пытаюсь создать программу с некоторыми привязками клавиш (F1-F12), которая будет обрабатывать нажатия клавиш, когда не в фокусе (в частности, во время игры).

Есть ли способ обнаружить нажатия клавиш, не используя глобальный хук? Язык, на котором я программирую (настоящая студия), не имеет средств для создания DLL (требуется для глобальных хуков), плюс я надеюсь, что он будет кросс-платформенным с Mac (что и делает realstudio).

Ответы [ 3 ]

0 голосов
/ 19 декабря 2011

RegisterHotKey не требует dll.

0 голосов
/ 19 декабря 2011

Хотя, как говорит klartex, для низкоуровневого хука клавиатуры / мыши не требуется DLL (в отличие от всех других типов хуков), хук любого вида, безусловно, излишний для того, что ты пытаешьсядля выполнения.

Все, что вам нужно, это RegisterHotKey функция , которая позволяет зарегистрировать любую клавишу (или комбинацию клавиш) как общесистемную горячую клавишу,Это удовлетворяет вашему требованию быть в состоянии забирать нажатия клавиш, даже когда ваше приложение не в фокусе.

В качестве бонуса, RegisterHotKey не требует DLL, и при этом она не является "тяжелой" как системаКрючокКрючки негативно влияют на производительность;вы не должны видеть это с RegisterHotKey.

После того, как вы зарегистрировали горячую клавишу, вызвав функцию, вы обрабатываете WM_HOTKEY сообщения внутри оконной процедуры вашего приложения.Когда вы закончите, убедитесь, что вы вызываете функцию UnregisterHotKey , чтобы отменить регистрацию вашего приложения для обработки этой горячей клавиши.

Единственное предостережение здесь упоминается в документации:

Клавиша F12 зарезервирована для использования отладчиком постоянно, поэтому ее не следует регистрировать как горячую клавишу.Даже если вы не отлаживаете приложение, F12 зарезервировано на тот случай, если отладчик режима ядра или отладчик «точно в срок».

Но та же проблема может возникнуть, если вы устанавливаетенизкоуровневый крючок для клавиатуры. F12 просто не подходит для выбора, независимо от приложения.Если вам абсолютно необходимо, используйте его на свой страх и риск.

0 голосов
/ 19 декабря 2011

При этом вы сможете подключить клавиатуру без DLL к Windows: http://msdn.microsoft.com/en-us/library/windows/desktop/ms644985%28v=vs.85%29.aspx

...