Задать вопрос
@ImagineTables

Кто в винде ворует хоткеи?

Есть программа, которая вешает свою обработку на произвольные клавиши. Она проработала у меня много-много лет, пока на днях не начались проблемы под Win11. Симптомы такие. После запуска приложения обработка клавиш отваливается примерно через десяток-другой нажатий на хоткей. Перезапуск лечит, но перезапускать по расписанию не вариант. Исходники потерялись, но там вешается клавитурный хук.

Я смутно помню, что уже решал эту проблему. Какая-то говноутилита из состава виндов вешала свои обработчики, которые конфликтовали с моими. Но не могу вспомнить, какая. Или, может, я неправильно запомнил.

Подскажите, куда копать.
  • Вопрос задан
  • 508 просмотров
Подписаться 2 Простой 6 комментариев
Решения вопроса 2
@u007
Ну, если бы меня разозлили, я б написал библиотеку, перехватывающую вызов SetWindowsHookEx. Буквально пара строчек:

1) получить адрес функции SetWindowsHookEx()
2) открыть доступ на запись к этому участку памяти через VirtualProtect(...)
3) Записать туда нули.

Подгрузить библиотеку ко всем процессам в системе (включая те, что с админским приоритетом), сесть на берегу реки и ждать, пока мимо проплывёт труп виновника.
Ответ написан
Комментировать
@alzneo
Есть утилита Hotkey Detective (опенсорс, на гитхабе). Запусти её и нажми свой хоткей. Она покажет, кто его захватил.
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
mamonblch
@mamonblch
Python, Clang
У меня была похожая проблема, когда я писал свой софт для создания хоткеев на Python. В какие-то определенные моменты, у меня просто переставали отслеживаться хуки, не ясно почему. Я долго ковырялся с библиотеками и форумами, но никто ничего не знал.
Тогда я просто сделал перепривязку на другое сочетание клавиш и все заработало.

Тогда я подумал, что виноваты:
1. Либо сама система, блокирующая мои связки клавиш из-за установки своих.
2. Либо сторонний софт по работе с клавиатурой, коего на тот момент в системе была гора и маленькая тележка.
3. Либо экранная клавиатура, но мне ее отключение ничего не дало.

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

Тут мало полезной информации, но вдруг что поможет:
- Отключение экранной клавиатуры
- Простой личный софт для создания биндов (Python)
- Отдельная клава для биндов (система ее не тронет)
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы