MsgBox

指定されたテキストを、1つまたは複数のボタン(YesやNoなど)を含む小さなウィンドウに表示します。

MsgBox Text, Title, Options
Result := MsgBox(Text, Title, Options)

パラメータ

Text

型:文字列

If omitted and "OK" is the only button present, it defaults to the string "Press OK to continue.". If omitted in any other case, it defaults to an empty string. Otherwise, specify the text to display inside the message box.

エスケープシーケンスは、特殊文字を表すために使用することができます。例えば、`nは改行文字を示し、現在の行を終了して新しい行を開始します。したがって、text1`n`ntext2を使用すると、text1とtext2の間に空白行ができる。

Textが長い場合、継続セクションによっていくつかの短い行に分割することができ、読みやすさと保守性を向上させることができるかもしれません。

Title

型:文字列

省略したときは、A_ScriptNameの現在の値がデフォルトとなります。Otherwise, specify the title of the message box.

Options

型:文字列

If blank or omitted, it defaults to 0 (only an OK button is displayed). Otherwise, specify a combination (sum) of values or a string of one or more options from the tables below to indicate the type of message box and the possible button combinations.

さらに、以下のオプションを0個以上指定することができます:

Owner:メッセージボックスのオーナーウィンドウを指定するには、Ownerという単語の直後にHWND(ウィンドウID)を使用します。

T:タイムアウト。指定した時間内にユーザーがメッセージボックスを閉じなかった場合、自動的に閉じるようにするには、文字Tの後にタイムアウトを秒単位で指定します(小数点以下も可)。この値が2147483(24.8日)を超えた場合、2147483に設定されます。メッセージボックスがタイムアウトした場合、戻り値はTimeoutという文字になります。

Optionsパラメータに設定する値

Optionsパラメータには、以下のグループからの数値の組み合わせ(合計)をオペレーティングシステムのMessageBox関数に直接渡すか、0個以上の大文字小文字を区別しないオプションを少なくとも1つのスペースまたはタブで区切った文字列を指定することができます。また、1つ以上の数値オプションを文字列に含めることができます。

グループ1:ボタン

メッセージボックスに表示されるボタンを指示するために、以下の値のいずれかを追加します:

関数 十進法 十六進法 文字列
OK 0 0x0 OKまたはO
OK、キャンセル 1 0x1 OKCancelO/CまたはOC
中止(A)、再試行(R)、無視(I) 2 0x2 AbortRetryIgnoreA/R/IまたはARI
はい(Y)、いいえ(N)、キャンセル 3 0x3 YesNoCancelY/N/CまたはYNC
はい(Y)、いいえ(N) 4 0x4 YesNoY/NまたはYN
再試行(R)、キャンセル 5 0x5 RetryCancelR/CまたはRC
キャンセル、再実行(T)、続行(C) 6 0x6 CancelTryAgainContinueC/T/CまたはCTC

グループ2:アイコン

メッセージボックスにアイコンを表示するには、次の値のいずれかを追加します:

関数 十進法 十六進法 文字列
Icon Hand (stop/error) 16 0x10 Iconx
Icon Question 32 0x20 Icon?
Icon Exclamation 48 0x30 Icon!
Icon Asterisk (info) 64 0x40 Iconi

グループ3:デフォルトボタン

デフォルトのボタンを示すには、以下の値のいずれかを追加します:

関数 十進法 十六進法 文字列
第2ボタンをデフォルトにする 256 0x100 Default2
第3ボタンをデフォルトにする 512 0x200 Default3
第4ボタンをデフォルトにする
ヘルプボタンがあることが必要です)
768 0x300 Default4

グループ4:モダリティ

ダイアログボックスのモダリティを示すために、以下の値のいずれかを追加します:

関数 十進法 十六進法 文字列
システムモーダル(常に上部に表示される) 4096 0x1000 該当なし
Task Modal 8192 0x2000 該当なし
常時トップ(スタイル WS_EX_TOPMOST)
(システムモーダル同様、タイトルバーアイコンが省略されています)
262144 0x40000 該当なし

グループ5:その他のオプション

その他のオプションを指定する場合は、以下の値を1つ以上追加してください:

関数 十進法 十六進法 文字列
ヘルプボタンを追加します(下記備考参照) 16384 0x4000 該当なし
テキストを右寄せにします 524288 0x80000 該当なし
ヘブライ語/アラビア語の右から左への読み方 1048576 0x100000 該当なし

戻り値

型:文字列

この関数は、ユーザーがどのボタンを押したかを表すために、以下の文字列のいずれかを返します:

ダイアログを表示できなかった場合は、空文字列が返されます。これは通常、MsgBoxの制限に達した場合にのみ発生しますが、その他の異常なケースでも発生する可能性があります。

エラー処理

オプションが無効な場合、MsgBoxの制限に達した場合、またはその他の理由でメッセージボックスを表示できなかった場合など、失敗するとErrorがスローされます。

備考

メッセージボックスは通常このように表示されます:

MsgBox

ユーザーがどのボタンを押したかを判断するには、関数の戻り値を使用します。事例:

Result := MsgBox("Would you like to continue?(press Yes or No)",, "YesNo")
if Result = "Yes"
    MsgBox "You pressed Yes."
else
    MsgBox "You pressed No."

if MsgBox("Retry or cancel?",, "R/C") = "Retry"
    MsgBox("You pressed Retry.")

To customize the names of the buttons, see Changing MsgBox's Button Names.

注意:メッセージボックスがアクティブな状態でCtrl+Cを押すと、そのテキストがクリップボードにコピーされます。これは、AutoHotkeyで作成されたメッセージボックスだけでなく、すべてのメッセージボックスに適用されます。

GUIウィンドウでMsgBoxを使用:GUIウィンドウは、OwnDialogsオプションにより、モーダルメッセージボックスを表示することができる。モーダルメッセージボックスは、メッセージボックスが解除されるまで、ユーザーがGUIウィンドウと対話することを妨げます。この場合、上表からシステムモード、タスクモードのオプションを指定する必要はありません。

OwnDialogsオプションが有効でない場合、Task Modalオプション(8192)を使用すると、ユーザーがメッセージボックスを解除するまで、スクリプトのすべてのウィンドウを無効にすることができます。

OwnerHWNDオプションが指定されている場合は、他の設定より優先されます。HWNDには、スクリプトが所有していないウィンドウのHWNDも指定することができます。

ヘルプボタン:Optionsでヘルプボタンオプション(16384)がある場合、以下の両方が成立していないと、ヘルプボタンを押しても効果がありません:

  1. メッセージボックスは、OwnDialogsオプションにより、GUIウィンドウに所有されます。
  2. スクリプトはWM_HELPメッセージ(0x0053)を監視しています。事例:OnMessage(0x0053, WM_HELP)。WM_HELP関数が呼び出されると、別のウィンドウやメッセージボックスを表示するなどの手段でユーザーを誘導することができる。

閉じるボタン(メッセージボックスのタイトルバー内):メッセージボックスはOSの組み込み機能なので、そのXボタンは特定のボタンが存在する場合にのみ有効になります。OKボタンしかない場合は、XボタンをクリックするとOKを押したのと同じになります。それ以外の場合は、キャンセルボタンがない限りXボタンは無効で、その場合はXをクリックするとキャンセルを押したのと同じことになります。

最大で7回の通話が可能:メッセージボックスを表示しているスレッドは、通常、中断することができ、前の呼び出しが戻る前に新しいスレッドが独自のメッセージボックスを表示することができます。MsgBoxの呼び出しは最大7回まで可能ですが、7回目を超えるとErrorが投げられます。中断されたスレッドでMsgBoxを呼び出すと、スレッドが再開されるまで戻ることができないことに注意してください。

InputBoxFileSelectDirSelectToolTipGuiオブジェクト

特定のテキストを含むメッセージボックスを表示します。情報を素早く簡単に表示する方法です。ユーザーはOKボタンを押すことでメッセージボックスを閉じ、実行を継続することができます。

MsgBox "This is a string."

特定のテキストとタイトルを含むメッセージボックスを表示します。

MsgBox "This MsgBox has a custom title.", "A Custom Title"

デフォルトのテキストでメッセージボックスを表示します。主にデバッグ用途で、スクリプトにブレークポイントを素早く設定する場合などに便利です。

MsgBox ; "Press OK to continue."

特定のテキスト、タイトル、情報アイコンを含むメッセージボックスが表示されます。そのほか、複数行のテキストをよりわかりやすく表示するために、コンティニュアスセクションを使用しています。

MsgBox "
  (
    最初のパラメーターがメッセージとして表示される。
    2番目のパラメータはウィンドウのタイトルになります。
    3番目のパラメータはメッセージボックスのタイプを決定します。
  )", "ウィンドウタイトル", "iconi"

戻り値から、ユーザーがメッセージボックスのどのボタンを押したかを判断します。この場合、MsgBox関数呼び出しは括弧で指定する必要があることに注意してください。

result := MsgBox("Do you want to continue?(Press YES or NO)",, "YesNo")
if (result = "No")
    return

T(タイムアウト)オプションを使用すると、一定の秒数後にメッセージボックスを自動的に閉じます。

result := MsgBox("This MsgBox will time out in 5 seconds.  Continue?",, "Y/N T5")
if (result = "Timeout")
    MsgBox "You didn't press YES or NO within the 5-second period."
else if (result = "No")
    return

メッセージに変数や部分式を含める。こちらも参照のこと:連結

var := 10
MsgBox "The initial value is: " var
MsgBox "The result is: " var * 2
MsgBox Format("The result is: {1}", var * 2)