ええと、なぜあるスクリプトで別のスクリプトを実行したいのかわかりません...しかし、いくつかの他の方法があります:
スクリプトを別のスクリプトに含める
include
しかし、別のスクリプト内にスクリプトを作成できることはご存知ですよね? つまり、メイン スクリプトで別のスクリプト関数を使用できます。
特定のスクリプトがロードされていることを確認する
「私は多くのスクリプトを手に入れました」も。使用する前に特定のものが含まれていることを確認する必要がある場合があるため、これを一番上に置きます。
;make sure core.ahk is loaded since it is required
#include c:\ahk\core.ahk
また、(必要でない限り) 複数回含まれることを心配する必要はありません。理由は次のとおりです。
#Include は、FileName が複数の包含に遭遇した場合でも、FileName が 1 回だけ含まれることを保証します。対照的に、#IncludeAgain では同じファイルを複数回含めることができますが、他のすべての点では #Include と同じです。
にインクルードfile.ahk
すると、file.ahk が必要とmain.ahk
する関数を使用しても問題がないことが保証されます。また、再度core.ahk
インクルードしても心配ありません (ただの関数ではなくサブルーチンが含まれている場合を除きます。その場合、サブルーチンはインクルードされた時点で実行されるため、サブルーチンを ahk ライブラリに配置しないことをお勧めします)。core.ahk
main.ahk
古き良き RUN on Scripts を使用する
それとは別に、いつでもrun
コマンドを使用してahkスクリプトを起動できることを知っています. 面倒な WM_SENDMESSAGE をすべて行う必要はありません。
非表示の GUI を使用してスクリプト間で通信する
2 つのスクリプトが相互に通信するもう 1 つの方法は、スクリプト #1 が編集ボックスと送信ボタンのある非表示の GUI ウィンドウを開いたままにすることです。このウィンドウは表示されません。ここで、スクリプト #2 はそのメッセージ ボックスを探しsend
、編集ボックスに文字列を入力してから、control キーを押しながらクリックして送信ボタンを押します。これで、スクリプト #1 がスクリプト #2 から入力を受け取りました。また、両方のスクリプトにウィンドウの値を入れておけば、ウィンドウを探す必要さえありませんhwnd
(したがって、事前にわかっているため)。これは魅力のように機能します。
スクリプトが完了したかどうかを伝える
ahk のコマンドを使用すると、そのプロセス (PID = プロセス ID)run
を返すパラメーターがあります。PID
これを使用しPID
て、スクリプトが実行されているかどうかを確認し、プロセスを終了するために使用できます。
また、runwait
- を使用すると、そのコマンドを使用するスクリプトは一時停止し、実行中のプロセスが完了して終了するのを待ってから続行します。