B_itemが先頭にある名前の変数
アイテム に渡された引数を値に持つ変数 を用意しています。
- B_itemArgAll
- B_itemArg1からB_itemArg9
- B_itemNameOwn
それが、これらの名前の変数です。
これらは、 二行以上のアイテム のスクリプト内で使用する時のみ意味を成す変数です。
アイテムに渡された引数の事を、
実行時の引数と表現します。
これらの変数の事を説明します。
B_itemNameOwn
値に アイテム名 を持つ変数です。
スクリプト内で、 アイテム名 を表したい場合に使用する変数です。
B_itemArgAll
値に「実行時の引数の全て」を持ちます。
つまり、
アイテム名
の右側の文字すべての事です。
両端の半角スペースは取り除かれます。
二行以上のアイテム で、以下のスクリプトのアイテムがあったとします。
F_output( "引数は " . V_var1 )
以上のスクリプトを、
B_itemArgAll
を使ったとすると、
%--
という記述になります。
上の2つの例は同じ処理になります。
B_itemArg1からB_itemArg9
B_itemArg1 は、値に「実行時の引数の引数1の文字」を持ち、
B_itemArg2 は、値に「実行時の引数の引数2の文字」を持ちます。
B_itemArg1
から
B_itemArg9
迄あります。
B_itemArg10
以降は存在しません。
引数の区切りは半角スペースによって区切られます。
「引数を,で区切る」ルール
「引数を,で区切る」ルールに対応しています。
引数1が , なら、引数の区切りは , によって区切られます。
このルールは別のページで説明します。
使用例
二行以上のアイテム で、以下のスクリプトのアイテムがあったとします。
V_var2 = %2
F_output( "引数1は " . V_var1 . "`n引数2は " . V_var2 )
以上のスクリプトの場合、
B_itemArg1
を使ったとすると、
%--
という記述になります。
上の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_itemNameOwn
や
B_itemArgAll
などの値を正しく表す事ができてる様ですが、
Sleep
や
MsgBox
などを使用し、
その時に別のスレッド
AHKは擬似スレッドになるらしいですが
が割り込む事があった場合、
B_itemNameOwn
などの値も別のに上書きされるので、そこは注意してください。
これは B_item と名のつく変数全般に同じ注意が必要です。
関数の代わりに
ここに挙げた
%1
または
B_itemArg1
などを使う事で、
アイテム
の引数を関数の引数に近い形で使用できるのではないかと思います。