Page 1 of 1

Is it possible to edit ehshell.dll to change how WMC works?

Posted: Sat Dec 19, 2020 12:13 pm
by incog
Hello all.

I've long since wanted to change a few things in the way WMC works that are not accessible via user options or registry entries.

One thing is I want is to change is how music albums are sorted in the album view under the genre sub-menu. The default is by album title, but it would be much more intuitive (to me at least!) to sort albums by artist.

I've seen this requested many times before and the compromise is to change the album tag to include artist name first (e.g. [album artist] | [album] or even [album artist] | [year] | [album] but this leads to a slightly messy display of album details.

Anyway, cutting to the chase - I took a look at ehshell.dll using freeware dnSpy. There's a tonne of stuff that references sortby, sortorder, sortattributes etc. I gather the shell dll also acts as a middleman to ehshell.exe for picking up registry entries. I've proven this by deleting a couple of 'get' and 'set' classes that result in registry values (like CurrentHomeView) being ignored and not updated after running WMC.

Initially I thought it would be really easy to get the album sort order I want. The sorting must untimely be based on the queries WMC sends to the WMP database and the dll seems to handle the building of query strings (lots of references to wmpquery etc!). However, try as I might I can't get my changes to the dll to change how WMC sorts albums. There are even SortAlbumsBy and SortSongsBy entries under audio/user settings! After some digging around it looks like Vista Media Center used to have context menu options for sorting albums by artist, title, date modified etc. in sub menus so maybe there are tonnes of redundant entries in the dll.

I will keep plugging away at it, but it would be very useful to know if anyone's had success manipulating WMC by changing the dll. Or even some guidance from someone more competent then me (not hard!) in the related programming languages!

Besides all of the above, it's quite interesting seeing into the dll to get a feel for how all the various features of WMC work. I'd recommend taking a look to anyone with a passing interest in these things!