Сделайте так, чтобы старый значок исчез из системного трея автоматически после перезагрузки SpeedFan

2925
Matthew Wai
@echo off taskkill /F /T /IM speedfan.exe start "" "C:\Program Files (x86)\SpeedFan\speedfan.exe" cls exit 

Я использую вышеупомянутые команды в файле .bat для автоматического перезапуска SpeedFan каждый раз, когда компьютер выходит из спящего режима.

Однако старый значок SpeedFan на панели задач не исчезнет автоматически при появлении нового. Я должен вручную переместить курсор на старый значок, чтобы он исчез. Как я могу заставить его исчезнуть автоматически?

Я только что нашел простое решение: скачайте NoTrayOrphans.exe с http://www.autohotkey.net/~Nazzal/Other/NoTrayOrphans.exe

Спасибо всем вам за вашу помощь!

3
убийство и перезапуск explorer.exe выполнит то, что вы хотите. Ramhound 8 лет назад 0
Вы имеете в виду C: \ Windows \ explorer.exe? Matthew Wai 8 лет назад 0
В вашей системе есть только один explorer.exe. Ramhound 8 лет назад 0
Ты не можешь Программа может автоматически удалить значок в системном трее, только если вы его аккуратно выключили. Вынуждая выйти с помощью taskkill, вы сознательно лишаете приложение возможности удалить его. qasdfdsaq 8 лет назад 0
`taskkill / F / T / IM explorer.exe`` start "" "C: \ Windows \ explorer.exe" `explorer.exe не запускается после того, как меня убили с моей стороны. Matthew Wai 8 лет назад 0
Ваша ссылка на NoTrayOrphans не работает. Я предполагаю, что это то же самое: https://autohotkey.com/board/topic/80624-notrayorphans/ MarredCheese 5 лет назад 0

2 ответа на вопрос

1
Limer

Теперь для правильного ответа.

Просто используйте простой скрипт AutoIt вместо taskkill /F /IM:

 WinClose("SpeedFan") 

Вам просто нужно убедиться, что «Свернуть при закрытии» отключено в конфигурации SpeedFan («Опции» -Tab).


Извините, если это неправильный ответ, и я не могу подтвердить это личным опытом, но вы даже пытались найти решение?

Мой общий подход заключается в том, чтобы совершать виртуальные движения мыши или использовать некоторые вызовы Windows-API, чтобы заставить окна обновлять область уведомлений .

Я никогда не делал ничего подобного, но после нескольких поисков я пришел к этой строке поиска Google: windows refresh icons "system tray" OR "notification area" autohotkey OR autoit

Один красивый результат: AHK - ow-to-refresh-system-tray-icons
Другой: autohotkey.com/board/topic/80624-notrayorphans/(связан в ветке сверху)

Другие результаты (без autohotkey OR autoit):

  1. Освежающее-The-уведомление-зонная система лотки
  2. forum.lazarus.freepascal.org/index.php?topic=14847.0
  3. blog.stephenklancher.com/2013/08/refreshing-the-notification-area-system-tray/исполняемым файлом - но он не работает на Windows 8.1 с классической оболочкой)

На SO есть возможный дубликат (я помню, что видел больше, но не могу их найти): stackoverflow.com/questions/74723/can-you-send-a-signal-to-windows-explorer-to-make-it-refresh-the-systray-icons

К сожалению, я не могу публиковать более прямые ссылки и предпочел бы написать комментарий вместо этого «ответа» ...

Я нашел простое решение: скачать NoTrayOrphans.exe с http://www.autohotkey.net/~Nazzal/Other/NoTrayOrphans.exe Matthew Wai 8 лет назад 0
@ Мэтью-вай - я удивлен, что не наткнулся на это. Тем не менее, использование `WinClose (" SpeedFan ")` вместо `taskkill / F / IM` выглядит более чистым в этом случае, поскольку SpeedFan не будет убит, но будет закрыт должным образом. Limer 8 лет назад 0
`WinClose (" speedfan.exe ")` не работает с моей стороны, поэтому я могу использовать только NoTrayOrphans.exe, который я обнаружил после поиска на многих соответствующих веб-страницах. Matthew Wai 8 лет назад 0
@ matthew-wai: скрипт AutoIt с ** `WinClose (" SpeedFan ")` ** (без `.exe` - это имя окна, а не исполняемый файл) отлично работает для меня, но требует прав администратора (просто как `taskkill`). Limer 8 лет назад 0
WinClose ("SpeedFan") `тоже не работает на моем конце. Ничего не происходит, когда он запускается. Matthew Wai 8 лет назад 0
0
RegencySoftware

Поместите приведенный ниже код в ваш пакетный файл, чтобы обновить systray. нашел источник по этой ссылке, который работает хорошо (код вставлен ниже из ссылки)

@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 
Я не понимаю этого Pierre.Vriens 5 лет назад 0

Похожие вопросы