Следуя тому, что дано @Plox, который вводит в заблуждение то, что требуется в этом посте, еще больше поясним, если мы поймем, что c:: MouseClick left,,,,, D
работает по тому же механизму, который используется
c::
MouseClick left,,,,, D
return
Движок AHK здесь запускает MouseDown, выходит из этого потока и снова подключается к пользовательскому вводу в ожидании другого действия, которое говорит, что если клавиша все еще удерживается, AHK будет бесконечно входить в ту же процедуру, когда она поймет, что горячая клавиша, вызывающая ее, является все еще нажата.
Можно использовать больше двух паллиативов:
Вы выбираете, чтобы просочиться AHK до тех пор, пока не выпустите тот же кей:
c::
MouseClick left,,,,, D
Keywait, c, U
MouseClick left,,,,, U
return
Или вы предпочитаете оставить интерпретатор AHK свободным вне той же самой процедуры, резервируя глобальную переменную keybound
чтобы запретить повторное обращение к тому же действию снова, если ключ еще не сделан свободным.
#HotkeyInterval 0
keybound:=0
c::
if keybound
return
keybound:=1
MouseClick left,,,,, D
return
c Up::
MouseClick left,,,,, U
keybound:=0
return
HotkeyInterval
- это пороговое значение, отключенное для предотвращения нежелательных предупреждений.