TrayTip

AutoHotKey

TrayTip

在托盘图标附近创建气球提示窗口. 在 Windows 10 中,toast 通知将会替代显示.

TrayTip [, Title, Text, Seconds, Options]

参数

Title

此参数为窗口标题, 可以长达 73 个字符 (超出此长度的字符不会显示出来).

如果 Title 为空, 则会移除气球窗口中的标题行, 这会让它垂直高度变短.

Note: 如果省略所有参数, 则移除任何当前显示的托盘提示窗口.

Text

指定要显示的消息, Title 仅显示 Text 中前 265 个字符.

如果此参数省略或为空, 则移除当前显示的任何托盘提示窗口. 然而, 要隐藏 Windows 10 toast 通知需要 it may be necessary to 临时移除托盘图标.

可以使用回车 (`r) 或换行 (`n) 来创建多行文本. 例如:Line1`nLine2.

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

Seconds

注意: 这参数在 Windows Vista 及之后系统无效.

要窗口显示的近似秒数, 达到这时间后它会被操作系统自动移除. 指定小于 10 或大于 30 的数字时通常会使用最小 (10) 或最大 (30) 的显示时间代替.如果为空或省略, 则一般使用最小的时间. 此参数可以为 表达式.

真实的时间可能不同于指定的时间. 微软解释说, "如果用户貌似没有使用计算机(空闲状态),那么系统不会以这个参数计算超时."(技术细节请参阅这里.) 因此, 要更精确地控制托盘提示显示的时间,请使用 Sleep 命令后面跟着不带参数的 TrayTip,或像下面的示例中演示的那样使用 SetTimer.

Options

Options 参数可以为 0 (零), 或是下列表中一个或多个参数值的总和:

功能十进制值十六进制值
信息图标10x1
警告图标20x2
错误图标30x3
Windows XP 和之后的: 不发出提示声.160x10
Windows Vista 和之后的: 使用大图标.320x20

如果省略则默认为 0 , 亦即无图标. 如果 Title 省略, 同样不会显示图标.

此参数可为 表达式.

备注

Windows 10 默认以 toast 通知替换气球提示窗口(这能被重置通过主策略). TrayTip 多次调用通常会导致多个通知被放置在一个"队列"而不是每个通知取代最近的那个. 若要隐藏通知,暂时移除托盘图标可能是有效的. 例如:

TrayTip #1, This is TrayTip #1
Sleep 3000   ; Let it display for 3 seconds.
HideTrayTip()
TrayTip #2, This is the second notification.
Sleep 3000

; Copy this function into your script to use it.
HideTrayTip() {
    TrayTip  ; Attempt to hide it the normal way.
    if SubStr(A_OSVersion,1,3) = "10." {
        Menu Tray, NoIcon
        Sleep 200  ; It may be necessary to adjust this sleep.
        Menu Tray, Icon
    }
}

如果脚本没有托盘图标(使用 #NoTrayIconMenu, tray, NoIcon), 则不会显示托盘提示的气球窗口.同样地, 如果下列的 REG_DWORD 值已经存在且被设置为 0, 则 TrayTip 不起作用:

HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced >> EnableBalloonTips

相关提示, 每当用户把鼠标悬停在脚本托盘图标上时会显示工具提示. 此工具提示的内容可以使用这样的方法改变:Menu, Tray, Tip, My New Text.

相关

ToolTip, SetTimer, Menu, SplashTextOn, MsgBox, InputBox, FileSelectFile, FileSelectFolder

示例

TrayTip, My Title, Multiline`nText, 20, 17
; 要更精确的控制显示的时间
; 而不使用 Sleep 的方法 (它停止了当前线程):
#Persistent
TrayTip, Timed TrayTip, This will be displayed for 5 seconds.
SetTimer, HideTrayTip, -5000

HideTrayTip() {  ; NOTE: For Windows 10, replace this function with the one defined above.
    TrayTip
}
; 要让托盘提示永久显示, 请使用计时器进行周期性的刷新:
; NOTE: This probably won't work well on Windows 10 for reasons described above.
#Persistent
SetTimer, RefreshTrayTip, 1000
Gosub, RefreshTrayTip  ; 调用一次来让它立即开始.
return

RefreshTrayTip:
TrayTip, Refreshed TrayTip, This is a more permanent TrayTip., , 16
return