[Windows Mobile Software Development] Chainfire:
First, at all, don't worry about the retrieving files, unsigning, patching, resiginging, putting them back, switching them in, restarting the device, etc. I got this covered, that's

my

job - it's not as complicated as it sounds, though it will possibly not work on every single ROM (may require app unlock, so stock ROM users may have to do manual reg edits). I have done all of these things in others tools, its just a matter of putting them together. I put this here because several responses included comments about it, these (parts) are not specifically replied to below.

This is literally the least of my worries :)

As you can see in my example, shellres is 'aliased'. To give a practical example (I hoped would be picked up from my example):

Say the user changes speaker:vibrate icon. As you can see from my example listing, this icon is present in shellres, HTCVolumeControl.dll and phcanOverbmp.dll.

Also, you can see that shellres is an alias for shellres.%DPI%.dll and shellres.%DPI%.dll.%LANG%.mui.

So now, it connects to device (or uses working copy, whatever) and looks for the following files:

shellres.%DPI%.dll (5073)

shellres.%DPI%.dll.%LANG%.mui (5073)

HTCVolumeControl.dll (131)

phcanOverbmp.dll (161)

For each of those files found, it will 'hack' the appropriate icons. If a file name differs, this is not a problem, as long as it is listed in alias section of definition. You will notice I have also made variables of DPI and LANG, of which DPI may select a different icon automatically and LANG is pretty much just a wildcard (*).

Indeed, the list of icons and truely which is which across various DLLs is need (like in my example, speaker:vibrate is linked to a number of icons). There are many duplicates, we need to find and list these (without errors :P) which is one of the reasons I have asked all you here (obviously aside from contributing your awesome gfx!). Those of you with the experience know these icons by heart, I myself however do not.

Obviously, we would also need to be sure that the file/icon-indices do not change between 6 and 6.5, or special provisions have to be made I must know about. Adding an icon (which may or may not exist on the target device) is easy, changing an icon's definition based on other factors (like WM version) is more difficult - and we must know!

I am not intimately familiar with marshall's wait cursor app. I have done a quick look at it but it also seems to modify resources (correct me if I'm wrong or read the wrong posts/threads). This is not really an option in taskbar customization as it's not a matter of a single resource per DLL, and the DLLs are used by various parts of the OS. Yes you can replace the entire thing, but this prevents you from "mix-and-match" and seems like pretty much the old/current situation of taskbar customization.

Replacing the taskbar system itself can be done in several ways. You could possibly (this is not possible with all calls, have not investigated these specifics) hijack the API calls used by 'taskbar client apps' and replace the icons on the fly, this would take virtually no resources (aside from some flash space for the icons used) but nearly come down to the same thing as just modifying the resource, but is an absolute female dog to do. API hijacking, though not as easy as on x86 systems, is in some situations very possible on WM (Wisbar for example uses it extensively) but is hardly ever an elegant solutions, and very error prone (even more so than the system I am proposing, imagine that!). Injecting at the right time to do what you want can be a tricky thing and honestly it's simply not something I like to do unless absolutely necessary.

Another way to do it would be to 'overlay' it as mentioned in another reply, but this would take much more resources and is an even dirtier solution than the API hijack way. You would constantly be running a double taskbar (one visible, one not), and have to reimplement/fake the entire thing. Though you are most likely only familiar with the standard icons in the taskbar, this pretty much destroys 3rd party use of the taskbar (app X adding it's own stuff).

If you want to add indicators like memory or CPU activity this is completely possible right now by writing a service app using normal WM API calls (suddenly makes me wonder why nobody did this :D) the proper way. Note however that last time I checked CPU measurement can only be done 'hacky' and no proper system exists for it right now on WM. Last time I checked was in early WM5 (perhaps even late 2003?) era, though. Using that system, I would definitely NOT recommend doing that full-time due to the nature of the hack (actual CPU use is 100% while checking/comparing).

As for the OK/X and transparent bars, well, honestly I don't know about those. Anybody else have comment on that?

Thanks for the info, 100% exactly as I suspected!

I think I either responded or agreed with everything you said already in my reply to the others ^^^^ :D