One late project
Vital dekstop is a program that runs screensavers as the desktop wallpaper. Absolutely useless but sounds and looks cool.
This project is long dead and will never be reactivated. But for some reason I've decided not to forget about it but to make a small museum out of it.
After all, this wasn't a commercial (eventually) thing, but almost pure fun and hacking. Hacking in the original meaning of it. Have a look in wikipedia about that. Can be surprising.
So from now on I'll be adding here information on how to use screensavers as wallpapers without additional software, why it's imperfect and how those imperfections were solved in vital desktop.
And of course the sources and other even less useful downloads are here, on sourceforge: http://sourceforge.net/projects/vital-desktop/
So back to the fun. Actually if you have Vista or newer os (in linux and I guess new mac os'es it was possible since the very inception of the X Server), you can run the screensaver as wallpaper without vital desktop. To do that run the following command (you're a hacker you know how to run commands, right?):
Cool, huh? There are two problems though. When you got bored you needed to kill the screensaver with the task manager and if you tried it first - you cannot drag icons over the desktop anymore.
Basically that was the main function of the Vital desktop. Apart from doing all that already on Windows 95.
Now the really boring part. How it was done. If you're not a programmer or not interested in internals of windows - I guess your visit to our museum is over. Thank you for dropping by!
Well the screensaver running/stopping is just the matter of creating and killing process. Nothing revolutionary here (apart I never managed to implement it absolutely right ;)
The drag and drop appeared to be a funny task. In windows it happens in two steps. First, when you drag something over the window it receives messages about that and responds with it's ability to accept drops. How would you make some other program respond to that messages? Actually in windows it's done somewhat hacky. When you call RegisterDragDrop function it actually stores so called "atom" property of a window called "OleDropTargetInterface"(undocumented) to the value of your IDropTarget structure. And surprizingly these properties are publicly writable. Yes, during experiments I've made standard windows caclulator responding as a valid drag target for files from windows explorer.
The final fun part was to control the screensaver's behaviour in preview mode (that /pXXXX means "show preview as child of XXXX window")
The only available technique for that is the Windows hooks. Mechanism allowing you injecting your code in other programs. You register for particular events (in our case it "capture messages") and when some special message arrives you do your job: register the screensaver window as the drop target, change the screensaver's entrypoint to your one (so screensaver does nothing stupid like hiding mouse) and redirect drop events to proper windows so when you drop file on desktop which is currently a screensaver, the file stays on the desktop where you expect.
Sounds pretty much like a virus, is it? I can imagine that some viruses use the same functionality. From security perspective after you install windows hook, your code gets injected in any, even administrative application and in addition has no own process, so you don't see virus.exe in task manager. Pretty dangerous thing. What's dangerous is always cool.
Well. That's it. This was fun project to develop, somewhat fun project to try to earn from it. I can't imagine someone would read up to this point. That doesn't matter. Fun we have with all the technology - is all that matters. Apart from love to all the people. So keep loving and inventing.