@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
):
- 刷新通知区域系统托盘
forum.lazarus.freepascal.org/index.php?topic=14847.0
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