SpeedFan 重启后,让旧图标自动从系统托盘中消失

SpeedFan 重启后,让旧图标自动从系统托盘中消失
@echo off
taskkill /F /T /IM speedfan.exe
start "" "C:\Program Files (x86)\SpeedFan\speedfan.exe"
cls
exit

我使用 .bat 文件中的上述命令,以便每次计算机从睡眠模式唤醒后自动重新启动 SpeedFan。

但是,系统托盘中的旧 SpeedFan 图标不会在新图标出现时自动消失。我必须手动将光标移动到旧图标上才能使其消失。我怎样才能让它自动消失?

我刚刚找到了一个简单的解决方案:从下载NoTrayOrphans.exehttp://www.autohotkey.net/~Nazzal/Other/NoTrayOrphans.exe

感谢大家的帮助!

答案1

我遇到了完全相同的问题,只需对我的 bat 文件进行简单的更改即可解决该问题,而无需安装任何其他程序。

问题是你运行 taskkill 时使用了 /f,这会强制(强制)终止任务。如果你不使用 /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 调用强制窗口刷新通知区域

我从来没有做过这样的事情,但经过几次搜索后,我找到了这个 Google 搜索字符串: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)

有一个可能重复在SO上(我记得看到更多,但似乎找不到它们): 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

相关内容