Altes Symbol nach dem Neustart von SpeedFan automatisch aus der Taskleiste verschwinden lassen

Altes Symbol nach dem Neustart von SpeedFan automatisch aus der Taskleiste verschwinden lassen
@echo off
taskkill /F /T /IM speedfan.exe
start "" "C:\Program Files (x86)\SpeedFan\speedfan.exe"
cls
exit

Ich verwende die obigen Befehle in einer .bat-Datei, um SpeedFan jedes Mal automatisch neu zu starten, nachdem der Computer aus dem Ruhemodus erwacht.

Das alte SpeedFan-Symbol in der Taskleiste verschwindet jedoch nicht automatisch, wenn das neue erscheint. Ich muss den Cursor manuell auf das alte Symbol bewegen, damit es verschwindet. Wie kann ich es automatisch verschwinden lassen?

Ich habe gerade eine einfache Lösung gefunden: Laden Sie NoTrayOrphans.exe herunter vonhttp://www.autohotkey.net/~Nazzal/Other/NoTrayOrphans.exe

Ich danke euch allen für eure Hilfe!

Antwort1

Ich hatte genau das gleiche Problem und habe es mit einer einfachen Änderung meiner Bat-Datei behoben, ohne dass ich andere Programme installieren musste.

Das Problem besteht darin, dass Sie taskkill mit /f ausführen, was den Task zwangsweise (hart) beendet. Wenn Sie ihn ohne /f beenden, wird ein Schließsignal an die Anwendung gesendet, die Anwendung wird sauber beendet und ihr Taskleistensymbol wird entfernt.

In meiner Bat-Datei führe ich zwei Taskkill-Befehle aus; den ersten ohne /f und dann noch einmal mit /f. Wenn der erste funktioniert (was normalerweise der Fall ist), ist alles in Ordnung und das Taskleistensymbol verschwindet. Wenn der erste aus irgendeinem Grund fehlschlägt, wird der zweite ihn trotzdem beenden, obwohl in diesem Fall das Taskleistensymbol nicht entfernt würde.

Verwenden Sie in Ihrem Fall also:
taskkill /T /IM speedfan.exe
taskkill /F /T /IM speedfan.exe

Antwort2

Nun zu einer richtigen Antwort.

Verwenden Sie einfach ein einfaches AutoIt-Skript anstelle von taskkill /F /IM:

 WinClose("SpeedFan")

Sie müssen nur sicherstellen, dass „Beim Schließen minimieren“ in der SpeedFan-Konfiguration (Registerkarte „Optionen“) deaktiviert ist.


Es tut mir leid, wenn das keine richtige Antwort ist und ich sie nicht mit persönlichen Erfahrungen belegen kann, aber haben Sie überhaupt versucht, eine Lösung zu finden?

Mein genereller Ansatz wäre,virtuelle Mausbewegungenoder verwenden Sie einigeWindows-API-Aufrufeum Windows zu zwingen,Aktualisieren Sie den Benachrichtigungsbereich.

Ich habe so etwas noch nie gemacht, aber nach ein paar Suchen bin ich bei Google auf diesen Suchstring gestoßen:windows refresh icons "system tray" OR "notification area" autohotkey OR autoit

Ein schönes Ergebnis:AHK - So aktualisieren Sie die Taskleistensymbole
Noch einer: autohotkey.com/board/topic/80624-notrayorphans/(im Thread von oben verlinkt)

Weitere Ergebnisse (ohne autohotkey OR autoit):

  1. Aktualisieren des Benachrichtigungsbereichs in der Taskleiste
  2. forum.lazarus.freepascal.org/index.php?topic=14847.0
  3. blog.stephenklancher.com/2013/08/refreshing-the-notification-area-system-tray/(mitausführbar- aber es scheint unter Windows 8.1 mit Classic-Shell nicht zu funktionieren)

Da ist einMögliches Duplikatauf SO (ich erinnere mich, mehr gesehen zu haben, kann sie aber nicht finden): stackoverflow.com/questions/74723/can-you-send-a-signal-to-windows-explorer-to-make-it-refresh-the-systray-icons

Leider kann ich keine direkteren Links posten und ich hätte lieber einen Kommentar geschrieben als diese „Antwort“ …

Antwort3

Fügen Sie den folgenden Code in Ihre Batchdatei ein, um die Taskleiste zu aktualisieren. habe unter diesem Link eine Quelle gefunden, die gut funktioniert(Code unten vom Link eingefügt)

@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

Antwort4

Mit der folgenden Stapelverarbeitung wird der Curer über die Icons bewegt und die Icons von beendeten Programmen werden entfernt:

Ansehenhttps://www.nirsoft.net/utils/nircmd.htmlfür kostenlose Funktionen.

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

verwandte Informationen