[v1.0.47+][編集]DllCall()で呼び出した関数などからスクリプト内の関数を呼び出すためのラッパー関数を生成し、アドレスを返す。スクリプト内の関数名を文字列値として指定する。以下のオプションを半角スペース区切りで指定する。FastモードとSlowモードを参照のこと。指定した関数を実行するとき、新たなスレッドを開始しないことにより、処理速度を向上させる。CDecl方式の関数を生成したい場合に指定する。関数が受け取る引数の数を指定する。関数に定義されている必須の引数と同じ数になる。指定されている引数の数より多かったり、必須の引数の数より少なかったりしてはならない。A_EventInfo変数に格納される値を指定する。省略時は、コールバック関数のアドレスとなる。指定されていても、既存スレッドの変数を上書きしない。戻り値[編集]成功した場合、作成した関数のアドレスを返す。指定した関数が存在しなかったり、引数の数や形式に問題があった場合などは、空の文字列が返される。コールバック関数の仕様[編集]コールバック関数は、DllCall()で呼び出す関数の引数に関数のアドレスを渡さなくてはならない場合などに使用する。指定した関数がAutoHotkeyによって実行される。指定する関数には、最大31個までの引数を定義できる。違うコールバック関数から同じ関数を呼び出せるように出来る。型の引数は使用できない。引数は、どのような型であっても、4バイト符号無し整数(0~4294967295=0xFFFFFFFF)に変換される。本来の型が符号付き整数である場合は、以下のようにすることで符号付き整数に変換できる。1本来の型が文字列値である場合は、下記のようなコードで内容を取り出せる。AutoHotkey_Lでは以下のようにする。利用して構造体内のデータを取得する必要がある。コールバック対象としたい関数が可変長引数を持つ場合、可変パラメタを格納した配列オブジェクトの最後の要素はコールバック関数自体のアドレスが追加される。これはスクリプト内で実際に引き渡された引数よりも一つ多くなっている。呼び出し規約を利用しているため、引数の個数は固定である。指定してやる必要がある。格納のするためのアドレス計算をすることから除外されるためである。負の値は、4バイト符号無し整数として扱われ、それ以外は4バイト符号無し整数として扱われる。有効な数値を返さなかった場合、コールバック関数の返値は0になる。等はAutoExecuteセクションで設定した値となる。影響を与えることはない。Fastモードでは、コールバック関数の実行は呼び出し元スレッド上で実行される。このため動作は高速となる。いったスレッド固有情報は、呼び出し元スレッドで変更したものとなっている。加えて、コールバック関数内でこれらに変更を加えた場合は、その結果は呼び出し元スレッドに影響を与えることになる。関数のような任意のタイミングで呼ばれるようなものには利用すべきでない。メモリ消費[編集]コールバック関数を一つ生成するごとに、32バイト程度のメモリを消費する。MyCallBackFunc)のようにして解放すること。記載がない限り、内容はパブリック・ドメインのライセンスで利用できます。