views:

233

answers:

3

How would I go about coding a new Windows Vista Shell?

+1  A: 

See Microsoft's documentation.

wallyk
This describes APIs for the existing Windows shell rather than how to build a new one -- though the question could mean "how do I build a new component for the shell" in which case fair enough.
itowlson
+1  A: 

A good place to start would be investigating how to build a command line parser, something that can tokenize and interpret the inputs. There are tools that can help with this like ANTLR, or you might like to try building your own.

Once you've parsed the inputs you need to decide what actions to take - launching processes, piping between processes, redirecting output - and making those system calls.

If you're just after a more powerful shell rather than interested in building one, give PowerShell a try.

cxfx
+2  A: 

Everything you need to do as shell has never been documented, so there are some issues with file change notifications etc. The basics are:

  1. SystemParametersInfo(SPI_SETMINIMIZEDMETRICS,...MINIMIZEDMETRICS) with (undocumented?) flag 8
  2. Register as the shell (SetShellWindow,SetProgmanWindow,ShellDDEInit,RegisterShellHook etc)
  3. Hide welcome screen by setting a signal ("msgina: ShellReadyEvent" and "ShellDesktopSwitchEvent")
  4. Start registry run key, start menu\startup and ShellServiceObjects
  5. Set registry Explorer\SessionInfo

The good thing is, you are not the first to write a new shell, if you look around, you can find some obscure required info. Here is a list to get you started:

Anders