This topic has been locked
Ew Oct 7, 2014 @ 9:14pm
Modifying tray icon
So i ripped out the .ico files from an old steam install on an external disk and change the icons in the steam .exe files with batch files. However steam creates a steam_original.exe and uses it to launch after the change and ignores my modified steam.exe . Is there any way to force steam to use the modified one?

This new tray icon is awful, its like Corsairs tramp stamp gamer logo. Done by a marketing team that has no insight into the market.

The old one was much easier to spot in the tray, not only that but it also actually was functional showing when you downloaded etc. Right now it just melts away and is very hard to spot. This is not a matter of getting used to or being used to the old one, the new one is a design fault.


So can it be fixed? There already are 2013 steam skins that works properly with the big picture removal and all, all thats missing now is the tray icon and Steam is Steam again. Apart from the awful blue storefront and forums and hard to read grey on grey textboxes...

Something went wrong while displaying this content. Refresh

Error Reference: Community_9708323_
Loading CSS chunk 7561 failed.
(error: https://community.cloudflare.steamstatic.com/public/css/applications/community/communityawardsapp.css?contenthash=789dd1fbdb6c6b5c773d)
Showing 1-14 of 14 comments
Ew Oct 7, 2014 @ 9:20pm 
* apparently Steam runs the modified .exe, but replaces the .ico file in it everytime you change, it keeps the actual file icon, but changes everything else to the round cancer meaning the tray icon etc.

Please halp, how can one make this modification of the .exe persist?

It even changes it back when i extract the new .ico pack with round cancer, replace each individual icon and pack it back in.
Last edited by Ew; Oct 7, 2014 @ 9:27pm
MalikQayum Oct 7, 2014 @ 9:28pm 
first off i havent looked into it but this should be fairly easy to do:

you need to understand that making a batch file with a icon to launch steam itself wont do u anything, what you need to do is change the resource icon in the compiled steam.exe there are multiple tools to achieve this by replacing icons etc but as i said earlier i havent looked into the resouces myself so i dont know which icons are there but u should just play around with it and figure out which icon displays for a download / update whatever and just replace that icon.

/ maybe u can show us exactly what u did with either images so that we can get a better understanding what u have done :)
Last edited by MalikQayum; Oct 7, 2014 @ 9:29pm
Ew Oct 7, 2014 @ 9:30pm 
I've done that as well to no avail, @AK87 . Even when setting the modified steam.exe to read only steam renames it to steam.exe.old and replaces it with a steam.exe with the round cancer.
MalikQayum Oct 7, 2014 @ 9:34pm 
can u link me the old steam.exe where u extracted the old icons?
Last edited by MalikQayum; Oct 7, 2014 @ 9:34pm
Ew Oct 7, 2014 @ 9:37pm 
Originally posted by AK87:
can u link me the old steam.exe where u extracted the old icons?
No but this is how it looks http://i.imgur.com/t9WW3Qb.png . I just noticed an inconcistency, i did guess that the old .ico file is just simply not compatible, but replacing the icons i seem to have messed up a bit, or this IcoFX program is not that good.
Last edited by Ew; Oct 7, 2014 @ 9:37pm
MalikQayum Oct 7, 2014 @ 9:52pm 
try deleting the "IconCache.db"
C:\Users\<USERNAME>\AppData\Local\IconCache.db
and restart explore.exe or reboot the pc
MalikQayum Oct 7, 2014 @ 9:57pm 
meh seems like the ordinal names doesnt match the pixels not sure if that might be the problem but try replacing icon by icon and not the whole folder if u did that.. as i cant see what u are dealing with.
Last edited by MalikQayum; Oct 7, 2014 @ 9:58pm
Ew Oct 7, 2014 @ 9:59pm 
Yes AK87 that is my thought as well, however when i replace each individual icon file the ordinal numbers change order as well, im not sure how to recreate it but maintaining the order. Its not the same Ordinal names as in the source for the old .ico. And what i do is basicly edit each image and copy over the old one over the new one and save meaning i should just edit the image of each file, not its properties. Just what..

*edit*
Currently stuck on : Why does the ordinal names change
Last edited by Ew; Oct 7, 2014 @ 10:08pm
MalikQayum Oct 7, 2014 @ 11:03pm 
i dont think this applies on sytem tray icons i actually remember in c# i am not entirely sure because i rarely make decent guis for for windows applications but i do recall there is an option to add a icon and a system tray icon and maybe resourcehacker cant change the system tray icon but it can change the taskbar icon, i just did the taskbar icon change myself but why does it bother u soo much to have the system tray icon they are small anyway and the steam icon does pop up on your taskbar does it not ?
Ew Oct 7, 2014 @ 11:42pm 
taskbar? I minimize STEAM to tray, it is a program one very seldom access unless starting a game. Same with Foobar and mIRC and Teamspeak, its all minimized to tray. And when i need to access them i just doubleclick their tray icons, they are background applications till one need them, no need to clutter the taskbar.

The trayicon is blue, round and melts into the windows 7 aero taskbar making it nearly impossible to spot. The old one was distinct black and white and stuck out in a nice way. The new one is not useful but also ugly, and the only reason it sticks out even a little bit is that its very bright under the gear making it an eyesore.

Yes the tray icon makes a huge diffrence, there is such a thing as a bad trayicon getting updated to a good one, what STEAM did here was change a good looking and functional one for a static ugly one with depressing blue color thats hard to see. Such a tiny detail makes a huge diffrence.
Last edited by Ew; Oct 7, 2014 @ 11:44pm
Amosm Nov 2, 2020 @ 3:42pm 
Did either of you ever figure this out? the little cancer plagues me still @ew
Ew Nov 5, 2020 @ 2:18am 
Originally posted by Amos:
Did either of you ever figure this out? the little cancer plagues me still @ew
i stopped caring simply, ironically, i stopped buying games on Steam as well. Didnt even think about it. Last 6 years i've bought 4 games on steam. Up til 2014 it was like 10 a year.
Last edited by Ew; Nov 5, 2020 @ 2:19am
Vincent13122 May 1, 2023 @ 3:27am 
I know this is veery old now, but I still think the old icon looks so much better.

I found this autohotkey script which you can compile into an exe to change it. You would have to run the exe every time you start Steam though, but you can probably write a bat that waits until steam has loaded and then run the icon exe)

https://www.autohotkey.com/boards/viewtopic.php?style=17&t=101683

processName := "steam.exe" newIconPath := "D:\Icons\Steam.ico" if !hIcon := LoadPicture(newIconPath, "w16 h-1", IMAGE_ICON := 1) throw "Failed to load icon" try Info := GetTrayIconInfo(processName) catch e { MsgBox, % e Return } ReplaceTrayIcon(hIcon, Info.hWnd, Info.Id) ReplaceTrayIcon(hIcon, hWnd, iconId) { static flag := NIF_ICON := 2, action := NIM_MODIFY := 1 VarSetCapacity(NOTIFYICONDATA, size := A_PtrSize*4 + 8, 0) NumPut(size , NOTIFYICONDATA) NumPut(hWnd , NOTIFYICONDATA, A_PtrSize) NumPut(iconId, NOTIFYICONDATA, A_PtrSize*2) NumPut(flag , NOTIFYICONDATA, A_PtrSize*2 + 4) NumPut(hIcon , NOTIFYICONDATA, A_PtrSize*3 + 8) Return DllCall("Shell32\Shell_NotifyIcon", "UInt", action, "Ptr", &NOTIFYICONDATA) } GetTrayIconInfo(proceccNameOrPID := "") { static TB_GETBUTTON := 0x417 , TB_BUTTONCOUNT := 0x418 , ptrSize := 4 << A_Is64bitOS , szTBBUTTON := 8 + ptrSize*3 , szTRAYDATA := 16 + ptrSize*2 Arr := [] dhw_prev := A_DetectHiddenWindows DetectHiddenWindows, On WinGet, PID, PID, ahk_exe explorer.exe RB := new RemoteBuffer(PID, szTRAYDATA) found := false Loop 2 { if (A_Index = 2) ControlGet, hToolBar, hwnd,, ToolbarWindow321, ahk_class NotifyIconOverflowWindow else { for k, v in ["TrayNotifyWnd", "SysPager", "ToolbarWindow32"] hToolBar := DllCall("FindWindowEx", "Ptr", k = 1 ? WinExist("ahk_class Shell_TrayWnd") : hToolBar, "Ptr", 0, "Str", v, "UInt", 0, "Ptr") } SendMessage, TB_BUTTONCOUNT,,,, ahk_id %hToolBar% Loop % ErrorLevel { SendMessage, TB_GETBUTTON, A_Index - 1, RB.ptr,, ahk_id %hToolBar% try RB.Read(TBBUTTON, szTBBUTTON) catch continue try RB.Read(TRAYDATA, szTRAYDATA, NumGet(&TBBUTTON + 8 + ptrSize) - RB.ptr) catch continue tipOffset := NumGet(&TBBUTTON + 8 + ptrSize*2) - RB.ptr try RB.Read(tip, 1024, tipOffset) hWnd := NumGet(TRAYDATA) WinGet, PID, PID, ahk_id %hWnd% (PID = proceccNameOrPID && found := true) WinGet, processName, ProcessName, ahk_id %hWnd% (processName = proceccNameOrPID && found := true) WinGetTitle, title, ahk_id %hWnd% Arr.Push({ PID: PID, ProcessName: processName, ID: NumGet(&TRAYDATA + ptrSize, "UInt"), WinTitle: title , hWnd: hWnd, Tip: tip, CallbackMessage: NumGet(&TRAYDATA + 4 + ptrSize, "UInt") , HICON: NumGet(&TRAYDATA + 16 + ptrSize, ptrSize = 4 ? "UInt" : "UInt64") }) } until found } until found DetectHiddenWindows, %dhw_prev% if (proceccNameOrPID && !found) throw "Icon of specified process not found" Return found ? Arr.Pop() : Arr } class RemoteBuffer { __New(PID, size) { static flags := (PROCESS_VM_OPERATION := 0x8) | (PROCESS_VM_WRITE := 0x20) | (PROCESS_VM_READ := 0x10) , Params := ["UInt", MEM_COMMIT := 0x1000, "UInt", PAGE_READWRITE := 0x4, "Ptr"] if !this.hProc := DllCall("OpenProcess", "UInt", flags, "Int", 0, "UInt", PID, "Ptr") throw Exception("Can't open remote process PID = " . PID . "`nA_LastError: " . A_LastError, "RemoteBuffer.__New") if !this.ptr := DllCall("VirtualAllocEx", "Ptr", this.hProc, "Ptr", 0, "Ptr", size, Params*) { DllCall("CloseHandle", "Ptr", this.hProc) throw Exception("Can't allocate memory in remote process PID = " . PID . "`nA_LastError: " . A_LastError, "RemoteBuffer.__New") } } __Delete() { DllCall("VirtualFreeEx", "Ptr", this.hProc, "Ptr", this.ptr, "UInt", 0, "UInt", MEM_RELEASE := 0x8000) DllCall("CloseHandle", "Ptr", this.hProc) } Read(ByRef localBuff, size, offset = 0) { VarSetCapacity(localBuff, size, 0) if !DllCall("ReadProcessMemory", "Ptr", this.hProc, "Ptr", this.ptr + offset, "Ptr", &localBuff, "Ptr", size, "PtrP", bytesRead) throw Exception("Can't read data from remote buffer`nA_LastError: " . A_LastError, "RemoteBuffer.Read") Return bytesRead } Write(pData, size, offset = 0) { if !res := DllCall("WriteProcessMemory", "Ptr", this.hProc, "Ptr", this.ptr + offset, "Ptr", pData, "Ptr", size, "PtrP", bytesWritten) throw Exception("Can't write data to remote buffer`nA_LastError: " . A_LastError, "RemoteBuffer.Write") Return bytesWritten } }

You need AutoHotkey 1.1.36 for this https://www.autohotkey.com/download/
Then use Resourcehacker to extract the old steam icon from this exe https://steam.de.uptodown.com/windows/download/78999 (Right click > Resource Hacker > Icon GROUP > Save ico resource
Then put the ico file anywhere you want, just set the "newIconPath" path in the script/ahk file accordingly

That's it!

And as I said, if you compile it into an exe (Which is just one click), you can uninstall autohotkey afterwards. You can also delete the downloaded old exe and uninstall resource hacker afterwards
This thread was quite old before the recent post, so we're locking it to prevent confusion.
Showing 1-14 of 14 comments
Per page: 1530 50

Date Posted: Oct 7, 2014 @ 9:14pm
Posts: 14