# TrayTip

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

    TrayTip , Title, Text, Seconds, Options

## 参数

Title

  窗口的标题, 仅显示前 73 个字符(超出此长度的字符不会显示出来).

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

  警告: 如果省略了 Text 参数, 那么即使指定了 Title 参数, 也不会显示该窗口.

Text

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

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

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

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

Seconds

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

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

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

Options

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

  功能 | 十进制值 | 十六进制值
  --- | --- | ---
  信息图标 | 1 | 0x1
  警告图标 | 2 | 0x2
  错误图标 | 3 | 0x3
  Windows XP 和之后的: 不发出提示声. | 16 | 0x10
  Windows Vista 和之后的: 使用大图标. | 32 | 0x20

  如果省略, 则默认为 0, 即无图标. 如果提示窗口没有 Title(这不适用于 Windows 10 的 toast 通知), 同样不会显示图标.

  此参数可为表达式.

## 备注

在 Windows 10 中, 托盘提示窗口通常是这样的:

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

    TrayTip #1, This is TrayTip #1
    Sleep 3000   ; 让它显示 3 秒钟.
    HideTrayTip()
    TrayTip #2, This is the second notification.
    Sleep 3000

    ; 将此函数复制到脚本中使用.
    HideTrayTip() {
        TrayTip  ; 尝试以正常的方式隐藏它.
        if SubStr(A_OSVersion,1,3) = "10." {
            Menu Tray, NoIcon
            Sleep 200  ; 可能有必要调整 sleep 的时间.
            Menu Tray, Icon
        }
    }

如果脚本没有托盘图标(使用 #NoTrayIcon 或 `Menu, 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

## 示例

在托盘图标附近显示多行气球消息或 toast 通知 20 秒, 而不播放通知声音. 它也有一个标题并包含一个信息图标.

    TrayTip, My Title, Multiline`nText, 20, 17

提供一个更精确的控制显示的时间的方法, 不要使用 Sleep(它会停止当前线程). 对于 Windows 10, 用上面定义的函数替换 HideTrayTip 函数.

    #Persistent
    TrayTip, Timed TrayTip, This will be displayed for 5 seconds.
    SetTimer, HideTrayTip, -5000

    HideTrayTip() {
        TrayTip
    }

要永久显示托盘提示, 请使用计时器进行周期性的刷新. 注意: 由于上述原因, 这可能无法很好地在 Windows 10 上运行.

    #Persistent
    SetTimer, RefreshTrayTip, 1000
    Gosub, RefreshTrayTip  ; 调用一次来让它立即开始.
    return

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

dftg