在一个窗口中显示指定的文本,并包含一个或多个按钮(比如 Yes/是 和 No/否)。
MsgBox, Text
MsgBox [, Options, Title, Text, Timeout]
Text | 如果省略所有的参数,MsgBox 会显示“Press OK to continue.”否则,将显示该参数所指定的文本,一般用来显示提示信息或当前状态信息。 Escape sequences/转义序列 可以用来显示特殊字符。比如,`n 代表一个换行符,它会另起一行。因此,使用 文本1`n`n文本2 可以在 文本1 和 文本2 之间插入一个空行。 如果 Text/文本 太长,可以使用 continuation section/字符串分段 的方法将它分为几个短小的段落,这样可以增加代码的可读性和可维护性。 |
Options | 指定消息框的类型和它所包含的按钮。如果留空或省略,默认为 0 。其它允许的值可以查看下方的表格。 这个参数不能使用表达式或者类似 %option% 这样的变量引用,请直接使用数字。 |
Title | 消息框的标题。如果留空或省略,默认为脚本名(不带路径)。 |
Timeout | (可选)超时时间,单位是秒(可以包含小数点但是不能是表达式)。如果它的值超过 2147483(24.8天),它将会被设置为 2147483 。超过超时时间以后消息框会自动关闭,并且可以使用 IfMsgBox 命令的参数 TIMEOUT 来捕获超时状态。 已知局限:如果 MsgBox 只包含一个 OK/确定按钮 ,则当它超时后,并且本身的 thread/线程 被其它脚本中断的时候,IfMsgBox 会认为它是按下了 OK/确定按钮 。 |
Options 参数可以是以下一个或多个值的和。
Function | 十进制值 | 十六进制值 |
OK/确定(也就是只显示 OK/确定按钮 ) | 0 | 0x0 |
OK/确定 | Cancel/取消 | 1 | 0x1 |
Abort/终止 | Retry/重试 | Ignore/忽略 | 2 | 0x2 |
Yes/是 | No/否 | Cancel/取消 | 3 | 0x3 |
Yes/是 | No/否 | 4 | 0x4 |
Retry/重试 | Cancel/取消 | 5 | 0x5 |
Cancel/取消 | Try Again/重试 | Continue/继续 (2000/XP以上) | 6 | 0x6 |
添加一个帮助按钮 (看下方的注解) | 16384 | 0x4000 |
错误图标(停止/错误) | 16 | 0x10 |
询问图标 | 32 | 0x20 |
感叹图标 | 48 | 0x30 |
信息图标 | 64 | 0x40 |
使第二个按钮为默认按钮 | 256 | 0x100 |
使第三个按钮为默认按钮 | 512 | 0x200 |
系统模式对话框(总在最前) | 4096 | 0x1000 |
任务模式对话框 | 8192 | 0x2000 |
在默认的桌面上显示消息框 (Windows NT/2000/XP 或之后的系统) |
131072 | 0x20000 |
总在最前(WS_EX_TOPMOST风格) (和系统模式消息框相似但是省略了标题栏图标) |
262144 | 0x40000 |
文字右对齐 | 524288 | 0x80000 |
从右往左的阅读顺序 | 1048576 | 0x100000 |
上方表格中的值在使用的时候可以进行相加。比如,要显示一个默认按钮为否的 是/否 对话框 ,则 Options 的值就是 256+4 (260) 。用十六进制表示就是 0x100+0x4 (0x104) 。
MsgBox 对逗号的处理比较智能,所以一般在 Text 参数中不需要对逗号进行 escape/转义 。
要判断用户在最近一次消息框中按下了哪个按钮,可以使用 IfMsgBox 命令,例如:
MsgBox, 4,, Would you like to continue? (press Yes or No) IfMsgBox Yes MsgBox You pressed Yes. else MsgBox You pressed No.
按钮的名字是可以自定义的,参看 这个例子 。
提示: 使用 Ctrl+C 可以复制当前激活的消息框中的文字。不仅是 AutoHotkey 提供的消息框,这个操作对所有的消息框都适用。
在 GUI/图形界面 中使用消息框: 在 GUI/图形界面 窗口中,可以使用 Gui +OwnDialogs 来显示一个 模式 消息框。模式 消息框可以避免用户在消息框消失之前对原来的 GUI/图形界面 窗口进行修改。注意:在这种情况下,在 Options 参数中可以不必指定 系统模式消息框 或者 任务模式消息框 。
当 Gui +OwnDialogs 无效 的时候,任务模式消息框(8192)可以屏蔽所有的脚本窗口,直到用户关闭了消息框。
帮助按钮: 在 Options 参数中使用了帮助按钮(83)的时候,点击帮助按钮不会有任何效果,除非满足以下两个条件:
关闭按钮(在消息框的标题栏上):因为消息框是操作系统内置功能,所以它的 X/关闭 按钮只有在能够使用的时候才会是启用状态。如果消息框只包含一个 OK/确定 按钮,点击 X/关闭 按钮等同于点击 OK/确定 按钮。否则,X/关闭 按钮处于停用状态,除非消息框包含了 Cancel/取消 按钮,这时点击 X/关闭 按钮就等同于点击 Cancel/取消 按钮。
IfMsgBox, InputBox, FileSelectFile, FileSelectFolder, ToolTip, GUI
MsgBox This is the 1-parameter method. Commas (,) do not need to be escaped. MsgBox, 4, , This is the 3-parameter method. Commas (,) do not need to be escaped. MsgBox, 4, , Do you want to continue? (Press YES or NO) IfMsgBox No return MsgBox, 4, , 4-parameter method: this MsgBox will time out in 5 seconds. Continue?, 5 IfMsgBox Timeout MsgBox You didn't press YES or NO within the 5-second period. else IfMsgBox No return ; 在参数的前面加上“%”,它后面就成了一个表达式 ; 在下面的例子中,进行了数学计算,读取了内置变量,调用了函数 ; 它们之间使用“.”联接成一条单独的字符串进行显示。 MsgBox % "New width for object #" . A_Index . " is: " . RestrictWidth(ObjectWidth%A_Index% * ScalingFactor) ; 下面的例子提醒用户一个消息框将要获取焦点(用户正在打字的时候)。 SplashTextOn,,, A MsgBox is about to appear. Sleep 3000 SplashTextOff MsgBox The backup process has completed.