# 如何讓 AutoHotkey 的 TrayTip 命令成功顯示訊息在 Windows 10 的通知中心

如果你是 Windows 10，在使用 [AutoHotkey](https://www.autohotkey.com/) 的時候可以透過 [TrayTip](https://www.autohotkey.com/docs/v1/lib/TrayTip.htm) 來顯示通知訊息， 他預設會顯示在 Windows 的通知中心 (視窗最右下角)，不過在預設安裝下，這個功能可能會失效。今天我就來說說這個問題的解法。

![An abstract and conceptual image representing Windows 10 notification center issues with AutoHotkey's TrayTip command  The image should feature elemen](https://stwillblogassets.blob.core.windows.net/files/images/external/stwillblogassets.blob.core.windows.net/81a0010b900c6513bb21-c0854712-0905-45f2-b838-72b374ce6773.webp)

### 使用範例

以下是 [TrayTip](https://www.autohotkey.com/docs/v1/lib/TrayTip.htm) 的使用範例：

```ini
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
    }
}
```

成功執行時的通知訊息如下：

![AutoHotkey TrayTip on Notification Center](https://stwillblogassets.blob.core.windows.net/files/images/external/github.com/d9bfc2d6e47134559edd-6634ec34-a2cc-419c-9334-1fa11aff7398.jpg)

### 問題說明

基本上 [AutoHotkey](https://www.autohotkey.com/) 在安裝時提供了三個安裝選項：

1.  `AutoHotkeyA32.exe`：32 位元 ANSI 版本。
2.  `AutoHotkeyU32.exe`：32 位元 Unicode 版本。
3.  `AutoHotkeyU64.exe`：64 位元 Unicode 版本。 <-- 預設安裝選項

![AutoHotkey](https://stwillblogassets.blob.core.windows.net/files/images/external/github.com/c59d4d30c37237f9e925-89966463-8007-4013-8841-ace38ca2eb44.jpg)

在我的電腦上，我是使用 `AutoHotkeyU64` 來安裝的，但是當我使用 `TrayTip` 來顯示通知訊息時，卻沒有任何訊息出現在 Windows 10 的通知中心，也沒有任何錯誤訊息，就是一直收不到通知而已。

不過我有在另一台 VM 測試過，透過 `AutoHotkeyU64` 的安裝是沒問題的，所以不太清楚問題在哪裡。由於我的電腦已經很久沒有重灌了，所以可能是某種原因造成的。

另外一個可能的原因是，Windows 10 與之後的版本，預設將所有氣球視窗替換為 Toast 通知 (這可以通過群組原則覆蓋)。多次呼叫 `TrayTip` 通常會導致多個通知被放置在 "佇列" 中，而不是每個通知替換上一次的通知。

而且，`TrayTip` 如果腳本缺少系統匣圖示 (透過 `#NoTrayIcon` 或 `Menu`, `Tray`, `NoIcon`) 也會失效。

還有一點也會失效，如果存在 `HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced` 機碼，而且 `EnableBalloonTips` 這個 `REG_DWORD` 值設定為 `0` 的話，`TrayTip` 也會失效：

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

### 解決方案

我自己的解法是重新安裝 `AutoHotkey`，但是這次選擇安裝 `32-bit` 的 Unicode 版本，這樣就可以正常運作了。

1.  全新安裝
    
    ```bash
    choco install autohotkey.install --params="'/DefaultVer:U32'"
    ```
    
2.  升級安裝
    
    ```bash
    choco upgrade autohotkey.install --params="'/DefaultVer:U32'"
    ```
    

### 相關連結

-   [AutoHotkey](https://www.autohotkey.com/)
    -   [AutoHotkey Forum](https://www.autohotkey.com/boards/)
    -   [AutoHotkey Downloads](https://www.autohotkey.com/download/)
-   [TrayTip not working in Windows 10 - AutoHotkey Community](https://www.autohotkey.com/boards/viewtopic.php?p=261485#p261485)
