return
ステートメントを適切に使用すると、サブルーチンは自動的に実行されません。
原則として、return
各サブルーチンまたは複数行のホットキーの最後に を付けます (単一行のホットキーには必要ありません)。(関数の実行は閉じ中かっこで終了するため、もちろん値を返したり、関数内の別の場所で終了したりしない限り、リターンは必要ありません。)
また、スクリプトの自動実行セクションの外でサブルーチンを定義して、スクリプトの開始時にサブルーチンが自動的に実行されないようにしてください。
AHK ドキュメントの「自動実行」セクションの詳細:
スクリプトの先頭 (自動実行セクション) スクリプトがロードされると、一番上の行から実行が開始され、Return、Exit、ホットキー/ホットストリング ラベル、またはスクリプトの物理的な最後 (いずれか) に到達するまで続行されます。最初に来ます)。スクリプトのこの上部は、自動実行セクションと呼ばれます。
永続的ではなく、ホットキー、ホットストリング、OnMessage、および GUI がないスクリプトは、自動実行セクションが完了すると終了します。そうしないと、ホットキー、ホットストリング、GUI イベント、カスタム メニュー項目、タイマーなどのイベントに応答して、アイドル状態で実行されたままになります。
EDIT : 残念ながら、方向関数呼び出しをメニューにバインドすることはできません。これはサポートされていないためです。ただし、対応するサブルーチン内から関数を呼び出すことはできます (これで、サブルーチンが自動的に実行されないようにする方法がわかりました)。一部の状態をグローバルに公開することで、関数に引数を渡す必要がなくなります。ただし、それをしたくない場合は、その時点で「バインドされた」関数に渡したい値に初期化された変数を作成し、それらを使用して「バインドされた」関数と同等のものを作成できます。あなたがかけたかった電話。例えば:
subroutine:
arg1 = <some expression>
arg2 = <some expression>
MyFunction(arg1, arg1)
return
MyFunction(a, b)
....
}