如果你是 Windows 10,在使用 AutoHotkey 的時候可以透過 TrayTip 來顯示通知訊息, 他預設會顯示在 Windows 的通知中心 (視窗最右下角),不過在預設安裝下,這個功能可能會失效。今天我就來說說這個問題的解法。
使用範例
以下是 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
}
}
成功執行時的通知訊息如下:
問題說明
基本上 AutoHotkey 在安裝時提供了三個安裝選項:
AutoHotkeyA32.exe
:32 位元 ANSI 版本。
AutoHotkeyU32.exe
:32 位元 Unicode 版本。
AutoHotkeyU64.exe
:64 位元 Unicode 版本。 <-- 預設安裝選項
在我的電腦上,我是使用 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
也會失效:
HKCU\Software\Microsoft\Windows\CurrentVersion\Explorer\Advanced >> EnableBalloonTips
解決方案
我自己的解法是重新安裝 AutoHotkey
,但是這次選擇安裝 32-bit
的 Unicode 版本,這樣就可以正常運作了。
-
全新安裝
choco install autohotkey.install --params="'/DefaultVer:U32'"
-
升級安裝
choco upgrade autohotkey.install --params="'/DefaultVer:U32'"
相關連結