Input
実行制御 | GUI表示 | 演算・変数 | メモリ・DLL操作 | 文字列操作 |
キーボード | マウス | シェル | ウィンドウ | ウィンドウグループ
ステータスバー | コントロール | サウンド | ファイル | INIファイル |
レジストリ | 環境変数 | AutoHotkey | その他 | 設定関係 | オブジェクト
Input[編集]
ユーザーの入力を横取りして取得する(NT系専用)。
Input [, OutputVar, Options, EndKeys, MatchList]
Parameters[編集]
引数名 | 説明 | |
---|---|---|
OutputVar | 入力されたテキストを格納する変数名。 EnterキーはLF( `n )として記録され、そのほかの非文字キーは無視される。
| |
Options | 以下のオプションをスペースで区切って列挙する。 | |
B | バックスペースが押されても入力された文字を削除しない。 | |
C | MatchListで大文字小文字を区別する | |
I | AutoHotkeyがSendコマンドなどで生成したキー入力を無視する。 | |
M | Ctrl+AからCtrl+Zまでのショートカットキーを受け取れるようにする。 これらの入力がなされた場合、OutputVarは1から26までのASCII文字になる。 Transform, CtrlC, Chr, 3 のようにして変数に同様のASCII文字を格納し、 If OutputVar = %CtrlC% のようにして各ショートカットキーが押されたかどうかを判定する。
| |
Ln | n に入力を受け付ける文字数の上限を指定する。(例:L5 )この文字数を超えると、コマンドは終了し、ErrorLevelは Max になる。省略時は16383文字まで受け付ける。 | |
Tn | n に入力を待つ最大の秒数を指定する。小数も使用可能。(例:T5 )この秒数以上が経過すると、コマンドは終了し、ErrorLevelは Timeout になる。タイムアウトしても、それまでに入力された文字列はOutputVarに格納される。 | |
V | 入力を乗っ取ってシステムから隠してしまわない。 通常は、入力を受け付けている間は、入力されたキーはほかのアプリケーションへは送られないが、このオプションを指定すると、普通にほかのアプリケーションに送られる。 | |
* | 入力文字列に対し、部分一致でMatchListとの一致判定を行う。通常は完全一致。 たとえば、MatchListに age を指定した場合、通常は age と入力するとマッチになるが、 * オプションをつけると sage と入力してもマッチするようになる。OutputVarには入力された文字列すべてが格納される。 | |
EndKeys | 入力を終了させるキー。 このキーが押されると、コマンドの実行が終了し、ErrorLevelに Endkey:押されたキー名 が代入される。Sendコマンドで使用するようなフォーマットで文字や特殊キー名を列挙する。 Ctrlキーなどの修飾キーを指定するときは、 {LCtrl} のように左右を明示指定する必要がある。
| |
MatchList | , で区切って文字列を列挙する。入力内容がここに列挙したものに一致した場合、コマンドは終了しErrorLevelが Match になる。カンマ区切りだが、引数の区切りとは扱いが違い、カンマの前後の空白文字などは、文字列の一部とみなされる。 変数の内容は展開されてから、カンマで分割される。リストが長くなる場合は、変数に格納しておくとよい。 文字列中でカンマをあらわすには、2つのカンマの連続( ,, )を使用する。
|
ErrorLevel[編集]
AHKL [v1.1.04+] パラメータなしで呼び出しおよび進行中のInputがない場合に例外をスローすることができる。詳細は実行時エラーを参照。
1 or 0 | すべての引数を省略して実行した場合、割り込みにより停止中のスレッドで実行されているInputコマンドを終了させたら 0 、停止させるInputコマンドがなかったら 1 になる。
|
NewInput | 割り込んだスレッドが新しいInputコマンドを実行した |
Max | 入力がオプションの L で指定した長さを超え、MatchListで指定した文字列にはマッチしなかった
|
Timeout | オプションの T で指定したタイムアウト時間が経過した
|
Match | MatchListで指定した文字列にマッチした |
EndKey:name | Endkeysに列挙された終了キーが押された場合。Endkey: に続きそのキー名が格納される。例えば、 Endkey:Enter 。
|
Remarks[編集]
このコマンドを使用すると、キーボードによる入力を監視して、入力されたテキストをOutputVarに格納することができる。
入力の監視はEndkeysで指定されたキーが押されるか、Lオプションで指定した文字数に達するか、Tオプションで指定した時間が経過するか、MatchListで指定されている文字列に入力が一致すると終了し、終了理由がErrorLevel変数に格納される。
入力を待っている間は、ホットキーやメニューなどで新たなスレッドが割り込むことが可能。
割り込んできたスレッドで新たにInputコマンドが実行されると、割り込まれたInputコマンドはErrorLevelが NewInput
となって終了する。
Inputコマンドを引数なしで実行すると、既存のInputコマンドの終了のみが行われる。
このコマンドが最初に実行されたとき、キーボードフックが有効化される。
それ以降は、スクリプトが常駐状態になり、ExitAppコマンドを実行するまで終了しなくなる。
ホットストリングの機能を使うと、簡単に特定のキーストロークに対して動作を割り当てることができる。
Related[編集]
KeyWait, InputBox, #InstallKeybdHook, スレッド, StringCaseSense
Example(s)[編集]
; Wait for the user to press any key. Keys that produce no visible character,
; such as the modifier keys, function keys, and arrow keys, are listed as end keys
; so that they will be detected too.
Input, SingleKey, L1, {LControl}{RControl}{LAlt}{RAlt}{LShift}{RShift}{LWin}{RWin}{F1}{F2}{F3}{F4}{F5}{F6}{F7}{F8}{F9}{F10}{F11}{F12}{Left}{Right}{Up}{Down}{Home}{End}{PgUp}{PgDn}{Del}{Ins}{BS}{Capslock}{Numlock}{PrintScreen}{Pause}; This is a working hotkey example. Since the hotkey has the tilde (~)
~[:: Input, UserInput, V T5 L4 C, {enter}.{esc}{tab}, btw,otoh,fl,ahk,ca If ErrorLevel = Max { MsgBox, You entered "%UserInput%", which is the maximum length of text. Return } If ErrorLevel = Timeout { MsgBox, You entered "%UserInput%" at which time the input timed out. Return } If ErrorLevel = NewInput Return IfInString, ErrorLevel, EndKey: { MsgBox, You entered "%UserInput%" and terminated the input with %ErrorLevel%. Return }; Otherwise, a match was found.
SetKeyDelay, -1; Most editors can handle the fastest speed.
If UserInput = btw Send, {backspace 4}by the way Else If UserInput = otoh Send, {backspace 5}on the other hand Else If UserInput = fl Send, {backspace 3}Florida Else If UserInput = ca Send, {backspace 3}California Else If UserInput = ahk Run, www.autohotkey.com Return