Недавно я в качестве эксперимента переключился на раскладку клавиатуры Дворжака. Одна из самых сложных частей перехода связана с горячими клавишами. Большинство горячих клавиш разработаны с учетом QWERTY, и, что еще хуже, горячие клавиши кажутся чрезвычайно ограниченными мышечной памятью.
Вместо того, чтобы заново изучать все горячие клавиши, я написал сценарий autohotkey для перевода макета Дворака обратно в QWERTY, когда Ctrl,Alt , или Winнажатие клавиш в сочетании с другими клавишами. Он прекрасно работает везде, где я пробовал, кроме Visual Studio '08. Кажется, нажатия клавиш перехватываются до того, как autohotkey сможет их перевести.
Почему это происходит и как это исправить?
Ниже приводится отрывок (с самого начала) моего сценария:
; control + letter
^;::^z
^q::^x
^j::^c
^k::^v
Обновление: скрипт отлично работает на Win7 с недавно установленными ahk, vs08 и coderush. На машине, с которой у меня проблемы, работает Vista. Есть мысли, как дальше ставить диагноз?
Обновление 2: сценарий отлично работает с Vista и 2010 beta 2. Кажется, что-то вроде vs 08 + vista. Сегодня вечером попробую новую установку vs08.
источник
Просто хочу добавить пару пунктов к решению, найденному самим ОП.
1) Проблема не в том, что AHK и VS работают с разными разрешениями - просто горячие клавиши, созданные скриптом, запущенным в режиме без администратора , не будут работать с приложениями, запущенными в админке. режиме , но не было бы проблем, если бы они наоборот.
2) Нет необходимости обязательно компилировать сценарий, просто установите autohotkey.exe для запуска в режиме администратора (это то, что я делаю) или, в качестве альтернативы, создайте ярлык для конкретного сценария и установите его всегда для запуска в режиме администратора. (кстати, просто чтобы указать, нет увеличения производительности при запуске скомпилированной версии сценария AHK, потому что код все еще интерпретируется - просто теперь интерпретатор встроен в созданный исполняемый файл)
источник
Это связано с функцией безопасности, которая называется изоляцией привилегий пользовательского интерфейса (UIPI) , которая является частью контроля учетных записей пользователей (UAC).
В FAQ есть несколько обходных путей:
Обычно я не рекомендую запускать сценарий от имени администратора, чтобы обойти эту проблему, поскольку он имеет побочные эффекты, которые могут быть неожиданными или нежелательными. Например, любая программа, запускаемая скриптом с
Run
, также будет запускаться от имени администратора. У сценария также будет ненужное разрешение на запись в различные папки, такие как Program Files. Немного плохого кода (вредоносный код, скопированный откуда-то или код с ошибкой) может таким образом нанести больший ущерб.Последние два варианта, конечно, тоже не рекомендую. Остается только Запуск с доступом к пользовательскому интерфейсу , который можно включить и использовать, как описано выше.
источник
По-видимому, для этого есть обходной путь.
Из документов Program.htm # Installer_uiAccess .
Тема форума от Lexikos
Отрывок:
Ссылка для загрузки файла ahk на форуме не работает, но я нашел ее на Github: EnableUIAccess.ahk
источник