返回介绍

MsgBox

发布于 2020-11-08 02:37:58 字数 7230 浏览 2262 评论 0 收藏 0

在含有一个或多个按钮(例如“是”和“否”)的小窗口中显示指定的文本 。

MsgBox, Text
MsgBox [, Options, Title, Text, Timeout]

参数

文本

如果省略所有的参数,MsgBox 会显示“Press OK to continue.”文本。否则,此参数表示消息框中显示的文本,用来引导用户如何操作或提示信息。

可以使用 转义序列 来显示特殊字符. 例如, `n 表示换行符, 它结束当前行并开始一个新行. 因此使用 text1`n`ntext2 会在 text1 和 text2 之间添加一个空行.

如果 Text 较长, 可以通过 延续片段 的方法将其分解成较短的几行, 这样可以增加可读性和可维护性.

选项

表示消息框的类型和合适的按钮组合。如果为空或省略,则默认为 0。请参阅下表来了解允许的值.

此参数必须为原义的数字或(在 v1.1.06+)强制表达式,例如 % Options。其他任何非空值都不会被看做是此参数, 相反的只是被认为是单参数模式中 Text 的一部分.

标题

消息框窗口的标题。如果省略或为空, 那么它默认为脚本的名称 (不含路径).

超时

(可选)以秒为单位的超时时间,默认情况下可以为小数但不能是表达式。在 v1.1.06+,此参数可以强制为表达式,例如 % mins*60

如果这个值超过 2147483(24.8 天),那么它会被设置为 2147483。经过这个超时时间后消息框将自动关闭且 IfMsgBox 命令将看到表示超时状态的值 TIMEOUT。

已知限制: 如果 MsgBox 仅含有一个 "确定" 按钮, 且当 MsgBox 自身的 线程 被其他线程中断时超时了, 那么 IfMsgBox 将认为用户按下了 "确定" 按钮.

Options 参数可以为一个或多个下列值的组合(和)。

功能十进制值十六进制值
确定 (即仅显示一个 "确定" 按钮)00x0
确定/取消10x1
终止/重试/忽略20x2
是/否/取消30x3
是/否40x4
重试/取消50x5
Cancel/Try Again/Continue60x6
添加一个 "帮助" 按钮 (请参阅后面的备注)163840x4000
   
错误图标 (停止/错误)160x10
问号图标320x20
惊叹号图标480x30
星号图标 (信息)640x40
   
让第二个按钮成为默认按钮2560x100
让第三个按钮成为默认按钮5120x200
   
系统模态 (总是在顶部)40960x1000
任务模态81920x2000
总是在顶部 (WS_EX_TOPMOST 样式)
(和系统模态类似, 但省略了标题栏图标)
2621440x40000
   
让文本右对齐显示5242880x80000
用于希伯来语/阿拉伯语的从右向左的阅读顺序10485760x100000

备注

使用上面的表格时, 可以把您期望用于 MsgBox 的选项值加在一起. 例如, 要显示一个默认按钮为 "否" 的 "是"/"否" 消息框, 那么需要把 Options 的值设置为 256+4 (260). 使用十六进制表示为 0x100+0x4 (0x104).

MsgBox 对逗号的处理比较智能, 所以通常不需要对 Text 参数中的逗号进行 转义.

要判断用户在最近的 MsgBox 中按下了哪个按钮, 请使用 IfMsgBox 命令. 例如:

MsgBox, 4,, Would you like to continue? (press Yes or No)
IfMsgBox Yes
    MsgBox You pressed Yes.
else
    MsgBox You pressed No.

参照 这个例子 可以自定义按钮的名称.

提示: 当 MsgBox 窗口活动时按下 Control-C 将复制其中的文本到剪贴板. 这适用于所有的 MsgBox, 而不仅是 AutoHotkey 生成的那些.

在 GUI 窗口中使用 MsgBox: 通过 Gui +OwnDialogs 的方法可以在 GUI 窗口中显示 模态 MsgBox. 模态 MsgBox 在其消失之前会阻止用户与原来的 GUI 窗口进行交互。此时, 不需要指定上表中的系统模态或任务模态选项.

Gui +OwnDialogs 无效 时, 在用户响应 MsgBox 前可以使用任务模态选项 (8192) 来禁用所有的脚本窗口.

"帮助" 按钮: 在 Options 中使用了 "帮助" 按钮选项 (83) 时, 只有符合下面两个条件, 那么按下 "帮助" 按钮才会有效果:

  1. MsgBox 是由 GUI 窗口通过 Gui +OwnDialogs 的方法显示的.
  2. 脚本正在监听 WM_HELP 消息 (0x53). 例如:OnMessage(0x53, "WM_HELP")。调用 WM_HELP() 函数时, 它可以通过如显示另一个窗口或 MsgBox 的方法引导用户.

关闭按钮(在 MsgBox 的标题栏):由于 MsgBox 窗口是操作系统内置的特性,所以它的 X 按钮仅在某些按钮存在时才会启用。如果只有一个 "确定" 按钮, 那么点击 X 按钮等同于按下 "确定" 按钮. 其他情况下, 只有含有 "取消" 按钮时才会启用 X 按钮, 此时点击 X 等同于按下 "取消" 按钮.

相关

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 可以显示的单个字符串:
MsgBox % "New width for object " is: " . RestrictWidth(ObjectWidth%A_Index% * ScalingFactor)

; 下面的例子提醒用户 MsgBox 即将获取焦点(此时用户正在输入)。
SplashTextOn,,, A MsgBox is about to appear.
Sleep 3000
SplashTextOff
MsgBox The backup process has completed.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据
    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文