Thanks to attempts to learn the Win32 API in C++, and reading the source code of Classic Shell, I now have a better understanding of how Windows manages windows and controls. First off, everything in Windows is a window. Even buttons, textboxes, etc. Classic Shell does not modify system files as I had originally thought it might. Instead it uses the Win32 API to add controls to the taskbar for the start menu modifications. I am almost to the point of being able to utilize this sort of thing in my own code. What I really aim to accomplish eventually is to readd the Active Desktop to Windows which was removed with Vista. I already have a basic idea of how I might be able to do this. Active Desktop was simply Trident (Iternet Explorer rendering engine) embedded in the desktop. This allowed using HTML files as backgrounds.The biggest issue I have right now is figuring out how to get the handles for the windows to hook to.

I have made some progress now on figuring out what parts of the explorer process I need to focus on.

The bottom two highlighted windows are the two I am interested in for this. Progman is responsible for rendering the background image. This is where I will likely want to attach the IEFrame control. SysListView32 is the window of explorer which handles displaying the icons on the desktop. Interesting, before digging around like this I'd assumed the same window handled both. What you are seeing in this is essentially various components of the explorer process. For anyone curious, I am using Process Hacker to get these details.

If I manage to pull this off, I plan to release the program as open source, probably through GitHub.

Click image for larger version