我需要在我的脚本中显示msgbox之类的内容,但无需等待点击即可。
我需要的是在一段时间内显示一个字符串,然后让它消失。如果它可以显示实时计时器字符串但不是必需的,将会很有帮助。
类似的东西:
...
msgbox, MyInformationString; display information
sleep, 30000 ; wait 30 seconds
; close msgbox but HOW ???
...
它不一定是msgbox命令。但我无法弄清楚如何创建一个新的弹出窗口或任何其他方式来显示信息。格式是我最关心的问题。
答案 0 :(得分:7)
查看docs中的msgbox
。由于您通过AutoHotkey生成msgbox
,因此可以设置自动关闭消息的时间限制。这意味着你不需要推动任何东西 - 框出现然后就会消失。
MsgBox [, Options, Title, Text, Timeout]
Timeout
是最后一个参数:
(可选)以秒为单位的超时,可以包含小数点但是 默认情况下不是表达式。在v1.1.06 +中,这可能是强制的 表达式如%mins * 60。
如果此值超过2147483(24.8天),则将其设置为2147483。 超时过后,消息框将自动出现 关闭,IfMsgBox命令将看到值TIMEOUT。
已知限制:如果MsgBox只包含一个OK按钮,IfMsgBox 如果MsgBox超时,会认为按下了OK按钮 而它自己的线程被另一个线程打断了。
答案 1 :(得分:6)
如果您真的想要自己倒计时,可以创建一个充当MsgBox的GUI。
在这个例子中,我们有4个参数。
以下是您的代码从普通MsgBox更改为此代码的方式。
MsgBox, Title, Msg
OtherCode
return
到
MsgBoxTimed("Title", "Msg", 10, "Foo")
return
Foo:
OtherCode
return
此功能需要位于同一个文件中,或#Include
d
MsgBoxTimed(title, msg, seconds, complete="") {
static init = false, _seconds, _complete
global Msg92, Seconds92
if (!init)
{
init := true
Gui, 92:Font, s24
Gui, 92:Add, Text, vMsg92 Center w360, %msg%
Gui, 92:Font, s30 cRed
Gui, 92:Add, Text, vSeconds92 Center w360, %seconds%
}
_seconds := seconds
_complete := complete
GuiControl, 92:, Msg92, %msg%
Gui, 92:Show, w400 h150, %title%
Update92:
GuiControl, 92:, Seconds92, %_seconds%
_seconds -= 1
if (_seconds > 0) {
SetTimer, Update92, -1000
}
else {
Gui, 92:Hide
if (_complete)
SetTimer, %_complete%, -1
}
return
}