B_itemが先頭にある名前の変数

アイテム に渡された引数を値に持つ変数 を用意しています。

  • B_itemArgAll
  • B_itemArg1からB_itemArg9
  • B_itemNameOwn

それが、これらの名前の変数です。

これらは、 二行以上のアイテム のスクリプト内で使用する時のみ意味を成す変数です。

アイテムに渡された引数の事を、
実行時の引数と表現します。

これらの変数の事を説明します。

B_itemNameOwn

値に アイテム名 を持つ変数です。

スクリプト内で、 アイテム名 を表したい場合に使用する変数です。

使用例
F_errorOutput( B_itemNameOwn  .  "  のアイテムでエラーがある" )

B_itemArgAll

値に「実行時の引数の全て」を持ちます。

つまり、 アイテム名 の右側の文字すべての事です。
両端の半角スペースは取り除かれます。

二行以上のアイテム で、以下のスクリプトのアイテムがあったとします。

V_var1 = %∗
F_output( "引数は  "  .  V_var1 )

以上のスクリプトを、
B_itemArgAll を使ったとすると、

F_output( "引数は  "  .  B_itemArgAll )
%--

という記述になります。
上の2つの例は同じ処理になります。

B_itemArg1からB_itemArg9

B_itemArg1 は、値に「実行時の引数の引数1の文字」を持ち、

B_itemArg2 は、値に「実行時の引数の引数2の文字」を持ちます。

B_itemArg1 から B_itemArg9 迄あります。
B_itemArg10 以降は存在しません。

引数の区切りは半角スペースによって区切られます。

「引数を,で区切る」ルール

「引数を,で区切る」ルールに対応しています。

引数1, なら、引数の区切りは , によって区切られます。

このルールは別のページで説明します。

引数を,で区切るルール

使用例

使用例

二行以上のアイテム で、以下のスクリプトのアイテムがあったとします。

V_var1 = %1
V_var2 = %2
F_output( "引数1は  "  . V_var1 .  "`n引数2は  "  . V_var2 )

以上のスクリプトの場合、
B_itemArg1 を使ったとすると、

F_output( "引数1は  "  . B_itemArg1 .  "`n引数2は  "  . B_itemArg2 )
%--

という記述になります。
上の2つの例は同じ処理になります。

B_itemArg0

値に「実行時の引数の引数の数」を持ちます。

注意点があります。

B_itemArg1 から B_itemArg9 までが使用可能ですが、
B_itemArg0 の値は、 9 を超えても
半角スペース、または , で区切った引数の数を表示するようになっています。

つまり、 10 を超えてもその数を表示する訳であり、
B_itemArg9 までしか使えない事は考慮しない様になっています。

B_itemArg0 を使用したスクリプトを使う場合で、
10 を超える値の場合、
B_itemArg9 までしか使えない事を考慮したスクリプトにユーザーが対応するようにしないといけない事になります。

といっても、 Loop を使えない以上、この変数を使用する事は無いと思いますが。

B_itemと名のつく変数について

いくつか注意点があります。

%--を最後につけておく

先ほども説明したことですが、
B_itemArgAll などを使用していた場合でも、
実行時の引数は、 通常通りスクリプトの後に続く引数になる事は変わらないため 、引数が二重に指定される事になってしまう事になります。

ですので、上の例のように、
%∗ を使う場合と違い、
スクリプトの最後に %-- を記入しておく必要があります。
引数が最後に追加されない様にするためです。

関数の引数ではないため、変数を指定する訳ではない

アイテム の引数を指定する際の話です。

関数の引数ではないため、変数を指定する訳ではありません。

testItem  A_MyDocuments
ではなく、
testItem  %A_MyDocuments%
という指定で使う事になります。

AHKコマンドの引数の指定に近い形になる感じです。

別のスレッドがあったら

現在の仕様では、 アイテム をネストして使用したとしても、
B_itemNameOwnB_itemArgAll などの値を正しく表す事ができてる様ですが、

SleepMsgBox などを使用し、
その時に別のスレッド AHKは擬似スレッドになるらしいですが が割り込む事があった場合、
B_itemNameOwn などの値も別のに上書きされるので、そこは注意してください。

これは B_item と名のつく変数全般に同じ注意が必要です。

関数の代わりに

ここに挙げた %1 または B_itemArg1 などを使う事で、
アイテム の引数を関数の引数に近い形で使用できるのではないかと思います。