Подпрограммы не выполняются автоматически, если вы правильно используете операторы return
.
Как правило, в конце каждой подпрограммы или многострочной горячей клавиши ставится return
(для однострочных горячих клавиш это не требуется). (Выполнение функции завершается в закрывающей фигурной скобке, поэтому вам не нужен возврат, если, конечно, вы не хотите возвращать значение или завершать завершение в какой-либо другой точке функции.)
Кроме того, убедитесь, что вы определили любую подпрограмму за пределами раздела auto-execute сценария, чтобы предотвратить ее автоматическое выполнение при запуске сценария.
Подробнее о разделе «автоматическое выполнение» из документов AHK:
Верхняя часть скрипта (раздел автоматического выполнения) После загрузки скрипта он начинает выполняться с верхней строки, продолжаясь до тех пор, пока не встретится метка Return, Exit, горячая клавиша/строка автозапуска или физический конец скрипта (в зависимости от того, что идет первым). Эта верхняя часть сценария называется разделом автоматического выполнения.
Сценарий, который не является постоянным и в котором отсутствуют горячие клавиши, строки быстрого доступа, OnMessage и графический интерфейс, завершится после завершения раздела автоматического выполнения. В противном случае он будет работать в режиме ожидания, реагируя на такие события, как горячие клавиши, горячие строки, события графического интерфейса, настраиваемые элементы меню и таймеры.
EDIT: К сожалению, вы по-прежнему не можете привязывать вызовы функций направления к меню, потому что это не поддерживается. Но вы можете вызывать свои функции из соответствующих подпрограмм (теперь, когда вы знаете, как предотвратить их автоматический запуск). Выставляя некоторое состояние глобально, вы можете устранить необходимость передачи аргументов вашим функциям. Однако, если вы не хотите этого делать, вы можете просто создать переменные, инициализированные любыми значениями, которые вы хотите передать в «привязанную» функцию в этой точке, а затем использовать их для создания эквивалента «привязанной» функции. вызов, который вы хотели сделать. Например:
subroutine:
arg1 = <some expression>
arg2 = <some expression>
MyFunction(arg1, arg1)
return
MyFunction(a, b)
....
}
person
Himanshu P
schedule
05.10.2012