На клавиатуре Windows висит крючок отладчика - PullRequest
3 голосов
/ 16 марта 2012

У меня есть подключаемый модуль DLL, который запускается из вторичного (не GUI) потока в основном приложении. DLL должна захватывать события клавиатуры из главного окна приложения. Я использую SetWindowsHookEx(), и он прекрасно работает.

Однако, если я достиг точки останова в Visual Studio, когда ловушка активна, а затем нажал клавишу, Visual Studio и мое приложение полностью заблокировались. Это проблема, потому что я обычно использую F-клавиши для перехода по коду. Если я использую мышь и выхожу из меню отладки Visual Studio, все работает нормально. Но используя F10 и соавт. это такая привычка, я обычно забываю использовать мышь.

Могу ли я что-нибудь сделать, чтобы вернуть назад свои сочетания клавиш? Или другой способ прослушивания клавиатуры?

1 Ответ

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

Это довольно неизбежно, перерыв в отладчике останавливает хук от обработки уведомлений, поэтому клавиатура отключается. Использование удаленного отладчика на другом компьютере - хороший способ отладки такого кода. Вы также захотите увеличить время ожидания перехвата, чтобы Windows не уничтожала перехват во время отладки, параметр HKEY_CURRENT_USER \ Control Panel \ Desktop \ LowLevelHooksTimeout. Предполагая, что вы используете WH_KEYBOARD_LL.

...