I resurrected an older piece of sofware that I wrote today.
A while ago, before I encountered Virtual Desktop Manager and DeskSpace I wanted to write a little tool that’d let me have multiple desktops on Vista.
It’s nowhere near as good as either of those tools 🙂 and it’s just a “work in progress”.
But, I wrote one. It’s very simple and (unlike most of these tools I suspect) it actually uses the Windows NT capability of having multiple Desktops within a Window Station. Consequently, it suffers quite a lot because the APIs for that don’t work so well when it comes to closing down desktops.
Regardless, I found myself wanting to use this piece of software today so I moved it to VS 2008 and rebuilt it.
Here’s the original post I wrote about it;
and here’s the post where I moved it to 64-bit;
Moving to 64-bit
I no longer run 64-bit and hence me revisiting this stuff today and rebuilding it.
I had to move it to VS 2008 which seemed pretty easy. I then rebuilt the 32-bit variants and that seemed to work fine.
What really struck me is that I have little recollection of writing this stuff – there’s a keyboard hook in unmanaged C++ and then there’s a chunk of C++/CLI stuff and a little bit of .NET on top of it. Whilst this code isn’t probably great quality, I think that one of the most fun things you can do these days is to write some C++/CLI and then consume it from .NET. There’s a lot of satisfaction to be had in turning relatively ugly Windows API’s into relatively nice looking .NET API’s.
In terms of usage, you run it up and it gives you a desktop tray icon.
Then you can right mouse on that;
You can create desktops and/or change your display mode (this is why I wanted this software today). Switching to another desktop (once you’ve created it) is relatively easy;
Or you can press SHIFT+F11/F12 to move between them (you can change this by changing the code in the keyboard hook – yes, there is no option :-)).
Changing the display mode is relatively easy;
although you could definitely argue that the menu’ing is a bit extreme 🙂 but it’s 100% quicker than doing Desktop->Personalise->Display Settings and all that.
Note that creating desktops is probably ok but the only surefire way to get rid of them afterwards is to log out of the machine.
I’ve included the 32-bit setup here.
I’ve included all the source for download here. Note that I haven’t built this in a 64-bit configuration again as I don’t have a 64-bit compiler right now.