Shell Explorer's Cookbook Introduction

This page used to have some explanations of 2xExplorer internals, and wasn't updated for ages. Over the last couple of years, 2x's features have grown so diverse and rich that a complete description of the program is out of the question. The alternative offered here is a presentation of key shell topics that make 2xExplorer tick. Clearly it is aimed towards developers and other inquisitive souls trying to get a peek underneath the windows shell covers.

I will be trying to consolidate all the information, sharing the overview of the subject I have formed during the past couple of years, whilst developing 2xExplorer. Who knows, one day I might end up writing a book about it, but for now I'll settle with this page. There are other websites offering shell FAQs (e.g. codeGuru, codeProject et al.), but they have a different point of view: building extensions that will integrate with windows explorer. Here you can get information for the flip side, i.e. finding out how explorer and the shell can be convinced to labour for you instead.

The problem with shell is that it is a vast topic for programmers, and there's no single source covering it. My sources, in order of preference, include:

I am not going to be revealing any "secrets" in the full sense of the word. All the information is "out there", obtained by regular procedures, none of them involving the supernatural or underground hacks <g>. Most of the time I will be presenting documented stuff. Microsoft have done a good work exposing most of the functionality one would be after via official routes, so one doesn't have to resort to undocumented and crash-prone hacks. At the same time I will try to avoid trivialization or/and repeating information already available in the online documentation. You may expect interesting quirky things, advanced features not properly explained and new shell features introduced with windows 2000.

I presume that the audience will have a good grasp of C++ and windows programming. Familiarity with COM (component object model) is a bonus but not absolutely essential, since I'll try to give a basic introduction.

Some source code will be provided, demonstrating how to put theory into practice. However, I wouldn't be providing complete solutions and wrapper classes for everything. My intention is to stimulate the interest of the readers and allow them to experiment and learn for themselves.

IMPORTANT: sample code omits normal error-correction code. This code has been removed only to make the code more readable. You should include all appropriate error-correction code in your own applications.

I regret that Netscape users will not fully enjoy the document layout, despite my efforts to patch for its shortcomings. Internet Explorer seems to be much more concise dealing with style sheets etc. I was a Netscape fanatic once upon a time, but constant inexplicable crashes and dubious layout algorithms have taken their toll...

Finally keep in mind that this page is continuously "under construction" in the sense that I'll be adding more features as and when they become available. As I learn more shell trix and add features to 2xExplorer, I'll try to share potentially interesting stuff with you folks at large. What a jolly good fellow, eh? <g> So let the information flow begin...

Dude! Get me outta here! Contents