View Issue Details

IDProjectCategoryView StatusLast Update
0002354SpeedFanUser interfacepublic2015-06-18 17:29
Reporterbugmenot Assigned Toalfredo  
PriorityhighSeverityminorReproducibilityalways
Status assignedResolutionopen 
Platformx86OSWindowsOS Version7 (and others)
Product Version4.50 
Summary0002354: SpeedFan tray icon missing after Explorer crash
DescriptionIf Windows Explorer crashes, when it restarts, unlike the tray icons of other programs, the SpeedFan icon is not re-created, so the user must use Task Manager to kill the speedfan.exe process and re-run it to regain the icon.
Steps To Reproduce 1. Wait for Windows Explorer to crash (or kill it yourself by killing explorer.exe or holding Ctrl+Shift while right-clicking an empty space in the Start Menu and selecting Exit Explorer.

 2. Restart Explorer (eg, Task Manager->Run->explorer).

 3. Observe that while the icons of other programs are restored, SpeedFan’s is not.
TagsNo tags attached.
Motherboard Model*
Video Card Model

Activities

MaxusR

2015-01-17 16:47

reporter   ~0007699

Speedfan have to use 'RegisterWindowMessage("TaskbarCreated")' and 'ChangeWindowMessageFilter' functions to get notification about taskbar (re)creation.

bugmenot

2015-06-18 17:29

reporter   ~0007825

Last edited: 2015-06-18 17:29

Hopefully this can be fixed soon because it is too troublesome to manually fix. (In addition to killing speedfan.exe and re-running it, you can also use something like WinSpy++ in elevated mode to show the main window, then minimize it, and the icon will be restored; but that too is a big hassle.)

Fortunately it is pretty easy to fix. As MaxusR said, SpeedFan only needs to detect the TaskbarCreated message and run its show-tray-icon routine.

Here is an example from https://msdn.microsoft.com/en-us/library/windows/desktop/cc144179.aspx#Taskbar_Creation_Not

LRESULT CALLBACK WndProc(HWND hWnd, UINT uMessage, WPARAM wParam, LPARAM lParam) {
    static UINT s_uTaskbarRestart;

    switch(uMessage)
    {
        case WM_CREATE:
            s_uTaskbarRestart = RegisterWindowMessage(TEXT("TaskbarCreated"));
            break;
        
        default:
            if(uMessage == s_uTaskbarRestart)
                AddTaskbarIcons();
            break;
    }

    return DefWindowProc(hWnd, uMessage, wParam, lParam);
}

Issue History

Date Modified Username Field Change
2015-01-17 03:53 bugmenot New Issue
2015-01-17 03:53 bugmenot Status new => assigned
2015-01-17 03:53 bugmenot Assigned To => alfredo
2015-01-17 16:47 MaxusR Note Added: 0007699
2015-06-18 17:29 bugmenot Note Added: 0007825
2015-06-18 17:29 bugmenot Note Edited: 0007825