使舊圖示在 SpeedFan 重新啟動後自動從系統托盤中消失

使舊圖示在 SpeedFan 重新啟動後自動從系統托盤中消失
@echo off
taskkill /F /T /IM speedfan.exe
start "" "C:\Program Files (x86)\SpeedFan\speedfan.exe"
cls
exit

我在 .bat 檔案中使用上述命令,以便每次電腦從睡眠模式喚醒後自動重新啟動 SpeedFan。

然而,當新的 SpeedFan 圖示出現時,系統托盤中的舊 SpeedFan 圖示不會自動消失。我必須手動將遊標移到舊圖示才能使其消失。怎麼樣才能讓它自動消失呢?

我剛剛找到了一個簡單的解決方案:從下載 NoTrayOrphans.exehttp://www.autohotkey.net/~Nazzal/Other/NoTrayOrphans.exe

我感謝大家的幫忙!

答案1

我遇到了完全相同的問題,並透過對 bat 檔案進行簡單更改來修復它,而無需安裝任何其他程式。

問題是您正在使用 /f 執行 taskkill ,這會強制(硬)終止任務。如果您在沒有 /f 的情況下殺死它,它會向應用程式發送關閉訊號,應用程式會乾淨地退出並刪除其係統托盤圖示。

在我的bat檔中,我執行了兩個taskkill指令;第一次不帶 /f,然後再帶 /f。如果第一個有效(通常應該如此),那麼一切都會好起來,系統托盤圖示就會消失。如果由於某種原因第一個失敗,第二個仍然會殺死它,儘管在這種情況下系統托盤圖示不會被刪除。

因此,在您的情況下,請使用:
taskkill /T /IM speedfan.exe
taskkill /F /T /IM speedfan.exe

答案2

現在尋求正確的答案。

只需使用一個簡單的 AutoIt 腳本代替taskkill /F /IM

 WinClose("SpeedFan")

您只需確保 SpeedFan 配置(“選項”-選項卡)中禁用“關閉時最小化”即可。


如果這不是一個正確的答案,我很抱歉,我無法用個人經驗來支持它,但是您是否嘗試過找到解決方案?

我的一般方法是虛擬滑鼠移動或使用一些Windows-api 呼叫強制視窗刷新通知區域

我從來沒有做過類似的事情,但經過幾次搜索後我得到了這個谷歌搜尋字串:windows refresh icons "system tray" OR "notification area" autohotkey OR autoit

一個好看的結果:AHK - 低刷新系統托盤圖標
另一篇:(autohotkey.com/board/topic/80624-notrayorphans/在上面的線程中連結)

其他結果(不含autohotkey OR autoit):

  1. 刷新通知區域系統托盤
  2. forum.lazarus.freepascal.org/index.php?topic=14847.0
  3. blog.stephenklancher.com/2013/08/refreshing-the-notification-area-system-tray/(和執行檔- 但它似乎不適用於帶有 classic-shell 的 Windows 8.1)

有一個可能重複關於(我記得看到了更多,但我似乎找不到它們): stackoverflow.com/questions/74723/can-you-send-a-signal-to-windows-explorer-to-make-it-refresh-the-systray-icons

不幸的是,我無法發布更多直接鏈接,我更願意寫評論而不是這個“答案”...

答案3

將下面的程式碼放入批次檔中以刷新系統托盤。 在此連結中找到了一個效果很好的來源(程式碼從連結貼到下面)

@echo off
reg export "HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" %userprofile%\desktop\traynotify.reg /y
reg delete "HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" /v IconStreams /f
reg delete "HKCU\Software\Classes\Local Settings\Software\Microsoft\Windows\CurrentVersion\TrayNotify" /v PastIconsStream /f
taskkill /f /im explorer.exe
start explorer.exe
exit

答案4

以下批次將固化器移到圖示上,並且已退出程式中的固化器將被刪除:

看著https://www.nirsoft.net/utils/nircmd.html用於免費功能。

SET "_NirCmd=D:\_NirSoft\nircmd-x64\nircmd.exe"

:: For the Taskbar on the bottom scan left -> right<br/>
%_NirCmd% SETCURSOR 1445, 1060<br/>
FOR /L %%C in (1,1,20) DO %_NirCmd% MOVECURSOR 20, 0<br/>
%_NirCmd% SETCURSOR 1445, 1060        <=== Just to move out of the way

:: For the Taskbar on the right scan two columns top -> down
%_NirCmd% SETCURSOR 1895, 800<br/>
FOR /L %%C in (1,1,20) DO %_NirCmd% MOVECURSOR 0, 10<br/>
%_NirCmd% SETCURSOR 1870, 800<br/>
FOR /L %%C in (1,1,20) DO %_NirCmd% MOVECURSOR 0, 10<br/>
%_NirCmd% SETCURSOR 1895, 800         <=== Just to move out of the way

相關內容