MsgBox

Displays the specified text in a small window containing one or more buttons (such as Yes and No).

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

Parameters

Text

Type: String

If all the parameters are omitted, the MsgBox will display the text "Press OK to continue.". Otherwise, this parameter is the text displayed inside the message box to instruct the user what to do, or to present information.

Escape sequences can be used to denote special characters. For example, `n indicates a linefeed character, which ends the current line and begins a new one. Thus, using text1`n`ntext2 would create a blank line between text1 and text2.

If Text is long, it can be broken up into several shorter lines by means of a continuation section, which might improve readability and maintainability.

Title

Type: String

The title of the message box window. If omitted, it defaults to the current value of A_ScriptName.

Options

Type: String

Indicates the type of message box and the possible button combinations. If blank or omitted, it defaults to 0. See the tables below for allowed values.

Values for the Options parameter

The Options parameter can be either a combination (sum) of numeric values from the following groups, which is passed directly to the operating system's MessageBox function, or a string of zero or more case-insensitive options separated by at least one space or tab. One or more numeric options may also be included in the string.

Group #1: Buttons

To indicate the buttons displayed in the message box, add one of the following values:

String Dec Hex Description
O 0 0x0 Displays only an OK button. Instead of O, you can also use OK.
OC 1 0x1 Displays an OK and Cancel button. Instead of OC, you can also use O/C or OKCancel.
ARI 2 0x2 Displays an Abort, Retry and Ignore button. Instead of ARI, you can also use A/R/I or AbortRetryIgnore.
YNC 3 0x3 Displays a Yes, No and Cancel button. Instead of YNC, you can also use Y/N/C or YesNoCancel.
YN 4 0x4 Displays a Yes and No button. Instead of YN, you can also use Y/N or YesNo.
RC 5 0x5 Displays a Retry and Cancel button. Instead of RC, you can also use R/C or RetryCancel.
CTC 6 0x6 Displays a Cancel, Try Again and Continue button. Instead of CTC, you can also use C/T/C or CancelTryAgainContinue.

Group #2: Icon

To display an icon in the message box, add one of the following values:

String Dec Hex Description
Iconx 16 0x10 Displays a hand icon which usually indicates stop or error.
Icon? 32 0x20 Displays a question icon.
Icon! 48 0x30 Displays an exclamation icon.
Iconi 64 0x40 Displays an asterisk icon which usually indicates info.

Group #3: Default Button

To indicate the default button, add one of the following values:

String Dec Hex Description
Default2 256 0x100 Makes the 2nd button the default button.
Default3 512 0x200 Makes the 3rd button the default button.
Default4 768 0x300 Makes the 4th button the default button. Requires the Help button to be present.

Group #4: Modality

To indicate the modality of the dialog box, add one of the following values:

String Dec Hex Description
  4096 0x1000 System Modal (always on top)
  8192 0x2000 Task Modal
  262144 0x40000 Always-on-top (style WS_EX_TOPMOST) (like System Modal but omits title bar icon)

Group #5: Other Options

To specify other options, add one or more of the following values:

String Dec Hex Description
  16384 0x4000

Adds a Help button. Pressing this button will have no effect unless both of the following are true:

  1. The MsgBox is owned by a GUI window by means of the OwnDialogs option.
  2. The script is monitoring the WM_HELP message (0x53). For example: OnMessage(0x53, "WM_HELP"). When the WM_HELP function is called, it may guide the user by means such as showing another window or MsgBox.
  524288 0x80000 Makes the text right-justified.
  1048576 0x100000 Enables right-to-left reading order for Hebrew/Arabic.
OwnerHWND     To specify an owner window for the MsgBox, use the word Owner followed immediately by a HWND (window ID).
TSeconds    

(Timeout) To have the MsgBox close automatically if the user has not closed it within a specified time, use the letter T followed by the timeout in seconds, which can contain a decimal point. If this value exceeds 2147483 (24.8 days), it will be set to 2147483.

If the MsgBox times out, the return value is the word Timeout.

Return Value

Type: String

When called from an expression, MsgBox returns one of the following strings to represent which button the user pressed:

OK
Cancel
Yes
No
Abort
Retry
Ignore
TryAgain
Continue
Timeout (that is, the word "timeout" is returned if the MsgBox timed out)

Remarks

A message box usually looks like this:

MsgBox

To determine which button the user pressed, use the function's return value. For example:

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.")

The names of the buttons can be customized by following this example.

Tip: Pressing Control+C while a MsgBox window is active will copy its text to the clipboard. This applies to all MsgBoxes, not just those produced by AutoHotkey.

Using MsgBox with GUI windows: A GUI window may display a modal MsgBox by means of the OwnDialogs option. A modal MsgBox prevents the user from interacting with the GUI window until the MsgBox is dismissed. In such a case, it is not necessary to specify the System Modal or Task Modal options from the table above.

When the OwnDialogs option is not in effect, the Task Modal option (8192) can be used to disable all the script's windows until the user dismisses the MsgBox.

If the OwnerHWND option is specified, it takes precedence over any other setting. HWND can be the HWND of any window, even one not owned by the script.

The Close button (in MsgBox's title bar): Since the MsgBox window is a built-in feature of the operating system, its X button is enabled only when certain buttons are present. If there is only an OK button, clicking the X button is the same as pressing OK. Otherwise, the X button is disabled unless there is a Cancel button, in which case clicking the X is the same as pressing Cancel.

Related

InputBox, FileSelect, DirSelect, ToolTip, Gui object

Examples

#1

MsgBox  ; "Press OK to continue."

MsgBox "This is a string."

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

#2: Use a continuation section to span multiple lines:

MsgBox "
  (
    The first parameter is displayed as the message.
    The second parameter becomes the window title.
    The third parameter determines the type of message box.
  )", "Window Title", "iconi"

#3: Perform different actions depending on the return value:

if MsgBox("Do you want to continue? (Press YES or NO)",, "YesNo") = "No"
    return
	
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

#4: Include a variable or sub-expression in the message:

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