Вам понадобится $
в начале вашей горячей клавиши, чтобы предотвратить бесконечный цикл, который вызовет !e
в вашем блоке else. Вы также можете добавить Return
в конце горячей клавиши, чтобы скрипт не продолжился в том, что находится под этой горячей клавишей.
$!e::
if GetKeyState( "CapsLock", "T" )
Sendinput, erase{space}wp{space}
else
Sendinput, !e
Return
(Квадратные скобки требуются только в том случае, если блоки if/else состоят из более чем одной строки.)
Кроме того, вероятная проблема заключается в том, что это горячая клавиша Alt, которая также настроена на отправку alt.
Я говорю, что это проблема, потому что если вы нажимаете и удерживаете alt, он активирует меню,
а затем скрипт отправляет alt, который будет конфликтовать с этим.
Как сказал Рикардо, идеальный способ написать это с помощью команды #IF
(входит только в AHK_L).
#If GetKeyState("CapsLock", "T") and WinActive("AutoCAD")
!e:: SendInput, erase{space}wp{space}
#If
Обратите внимание, что вы можете добавить функцию WinActive() в выражение команды #If
. Попробуйте сначала без этого, а также поймите, что название приложения всегда должно быть точно AutoCAD, чтобы оно работало. Я бы порекомендовал найти ahk_class AutoCad с оконным шпионом AHK вместо использования названия.
Если это по-прежнему не работает, вероятно, AHK отправляет быстрее, чем AutoCAD хотел бы получать.
Информацию о том, как с этим справиться, можно найти здесь.
person
Honest Abe
schedule
06.07.2012