SpeedFan이 다시 시작된 후 시스템 트레이에서 이전 아이콘이 자동으로 사라지도록 설정

SpeedFan이 다시 시작된 후 시스템 트레이에서 이전 아이콘이 자동으로 사라지도록 설정
@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

도움을 주신 모든 분들께 감사드립니다!

답변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 호출창을 강제로알림 영역 새로고침.

나는 그런 일을 해본 적이 없지만 몇 번의 검색 끝에 다음 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/(와 함께실행 가능- 하지만 클래식 쉘을 사용하는 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

다음 배치는 curer를 아이콘 위로 이동하고 종료된 프로그램의 아이콘은 제거됩니다.

보다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

관련 정보