# TrayTip

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

    TrayTip Text, Title, Options

## 参数

Text

  类型: 字符串

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

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

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

  可以通过留空 Text 来显示只有标题的窗口.

Title

  类型: 字符串

  窗口的标题. 仅显示前 73 个字符.

  如果 Title 为空, 标题行将完全从窗口中删除, 这会让它垂直高度变短.

Options

  类型: 字符串或整数

  可以是一个整数值(由加法或按位或的组合), 也可以是一个由至少一个空格或制表符分隔的不区分大小写的零或多个选项字符串. 字符串中还可以包含一个或多个数字选项.

  功能 | 十进制值 | 十六进制值 | 字符串
  --- | --- | --- | ---
  信息图标 | 1 | 0x1 | `Iconi`
  警告图标 | 2 | 0x2 | `Icon!`
  错误图标 | 3 | 0x3 | `Iconx`
  托盘图标 | 4 | 0x4 | N/A
  不播放通知音. | 16 | 0x10 | `Mute`
  使用大图标. | 32 | 0x20 | N/A

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

  在 Windows 10 中, 即使省略了 "tray icon" 选项 (4), 小托盘图标通常也会显示, 并且指定该选项可能会导致程序的名称显示在通知中.

## 隐藏窗口

要隐藏 TrayTip 气球窗口, 同时省略 Text 和 Title. 例如:

    TrayTip

要隐藏 Windows 10 的 toast 通知, 临时移除托盘图标. 例如:

    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." {
            A_IconHidden := true
            Sleep 200  ; 可能有必要调整 sleep 的时间.
            A_IconHidden := false
        }
    }

根据至少一份报告, 这可能并不总是有效的.

## 备注

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

Windows 10 默认以 toast 通知替换气球提示窗口(这能被重置通过主策略). TrayTip 多次调用通常会导致多个通知被放置在一个 "队列" 而不是每个通知取代最近的那个.

如果脚本没有托盘图标(使用 #NoTrayIcon 或 `A_IconHidden := true`), 则 TrayTip 没有效果. 同样地, 如果下列的 REG_DWORD 值存在且被设置为 0, 则 TrayTip 没有效果:

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

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

## 相关

ToolTip, SetTimer, Menu 对象, MsgBox, InputBox, FileSelect, DirSelect

## 示例

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

    TrayTip "Multiline`nText", "My Title", "Iconi Mute"

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

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

    HideTrayTip() {  ; 注意: 对于 Windows 10, 用上面定义的函数替换这个函数.
        TrayTip
    }

通过定时器定期刷新, 永久显示托盘提示. 注意: 由于上述原因, 这在 Windows 10 上可能无法正常工作.

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

    RefreshTrayTip()
    {
        TrayTip "This is a more permanent TrayTip.", "Refreshed TrayTip", "Mute"
    }

dftg