Полноэкранное приложение предотвращает использование горячих клавиш

Я разработал приложение WPF, которое регистрирует горячие клавиши с помощью com-взаимодействия и обрабатывает их с помощью WndProc.

Горячие клавиши работают отлично, даже когда приложение не имеет фокуса. Однако они не работают, когда в фокусе находятся определенные полноэкранные приложения (игры). Есть ли способ исправить это?

Спасибо!


person SaphuA    schedule 15.11.2010    source источник
comment
Возможно нет. Трудно угадать, как выглядит «usomg com».   -  person Hans Passant    schedule 15.11.2010


Ответы (2)


Отключение горячих клавиш преднамеренно, и, насколько я знаю, вы мало что можете с этим поделать.

Полноэкранные приложения DirectX (обычно игры) будут вызывать IDirectDraw::SetCooperativeLevel с флагами DDSCL_FULLSCREEN и DDSCL_EXCLUSIVE, что, среди прочего, приводит к отключению зарегистрированных горячих клавиш.

person Chris Taylor    schedule 15.11.2010

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

Это хорошее руководство по настройке хук клавиатуры низкого уровня в C#.

person Zach Johnson    schedule 15.11.2010