1

Тема: AHK: Перехват нажатия клавиш, Windows 7 x64 и режим совместимости.

Столкнулся со странным поведением AutoHotkey под Windows 7 64-разрядная. Причем так сложилось, что в этот момент в системе произошло несколько изменений и я долго не мог понять почему работавший ранее скрипт вдруг перестал это делать.

Я использую AHK для автоматизации некоторых аспектов World of Wаrсrаft. Я нажимаю одну горячую клавишу, а скрипт анализирует текущее состояние персонажа и выдает в игру команду, активирующую наиболее подходящую в данный момент способность/заклинание.

Под основную горячую клавишу была задействована клавиша тильда/апостроф, а также её комбинация с клавишей Shift. Также задействованы комбинации Ctrl+F7 - Ctrl+F10 для переключения состояния переменных-флагов.

Однажды я обнаружил, что скрипт больше не реагирует на нажатие клавиш "тильда" и Shift+"тильда". При этом комбинации Ctrl+Fn обрабатываются как и раньше. Небольшое исследование показало, что эти клавиши не обрабатываются только если активно окно игры, во всех остальных окнах всё работает как и раньше (скрипт не проверяет какое окно активно, когда он не нужен я его просто выключаю).

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

Как в итоге оказалось это поведение было вызвано тем, что для исполнимого файла игры я за день до этого (пытаясь решить другую проблему) выставил режим совместимости с Windows XP (SP3).

Резюме: При запуске под Windows 7 x64 приложений в режиме совместимости с Windows XP (SP3) скрипты AHK перестают перехватывать нажатия одиночных клавиш. Комбинации клавиш с Ctrl и Win (другие не проверял) обрабатываются как обычно.

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

2 (изменено: creature.ws, 2012-12-11 21:31:24)

Re: AHK: Перехват нажатия клавиш, Windows 7 x64 и режим совместимости.

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

Это частный случай «проблемы». Autohotkey ни при чём.

Если вам требуется постоянное решение временной проблемы — ознакомьтесь: Enable interaction with administrative programs