Input

提供: AutoHotkey Wiki
移動: 案内検索

実行制御 | 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)
この文字数を超えると、コマンドは終了し、ErrorLevelMaxになる。
省略時は16383文字まで受け付ける。
Tn n に入力を待つ最大の秒数を指定する。小数も使用可能。(例:T5)
この秒数以上が経過すると、コマンドは終了し、ErrorLevelTimeoutになる。
タイムアウトしても、それまでに入力された文字列はOutputVarに格納される。
V 入力を乗っ取ってシステムから隠してしまわない。
通常は、入力を受け付けている間は、入力されたキーはほかのアプリケーションへは送られないが、このオプションを指定すると、普通にほかのアプリケーションに送られる。
* 入力文字列に対し、部分一致でMatchListとの一致判定を行う。通常は完全一致。
たとえば、MatchListに ageを指定した場合、通常は ageと入力するとマッチになるが、 *オプションをつけると sageと入力してもマッチするようになる。
OutputVarには入力された文字列すべてが格納される。
EndKeys 入力を終了させるキー。
このキーが押されると、コマンドの実行が終了し、ErrorLevelEndkey:押されたキー名が代入される。
Sendコマンドで使用するようなフォーマットで文字や特殊キー名を列挙する。
Ctrlキーなどの修飾キーを指定するときは、 {LCtrl}のように左右を明示指定する必要がある。
MatchList , で区切って文字列を列挙する。
入力内容がここに列挙したものに一致した場合、コマンドは終了しErrorLevelMatchになる。
カンマ区切りだが、引数の区切りとは扱いが違い、カンマの前後の空白文字などは、文字列の一部とみなされる。
変数の内容は展開されてから、カンマで分割される。リストが長くなる場合は、変数に格納しておくとよい。
文字列中でカンマをあらわすには、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コマンドはErrorLevelNewInputとなって終了する。
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