logo Welcome to Dennis Lang's
Source Code and Performance Metrics

lang.dennis@comcast.net
Linkedin: http://www.linkedin.com/pub/1/119/293

Updated: 29-Nov-2009

[ To Main Page ]


DeskMenu v1.0 (Nov 2009)

deskmenu Download:

This is a simple project to create a DLL used to launch Explorer from the desktop background context menu. The menu appears when you right click on the background.

deskman-menu

A DLL is required because the only commands available to the desktop background context are dynamic menus. Dynamic menus are specified off of the shellex registry tag and point to a UID associated with a registered DLL.

bgregistry

The project is based off of C# shell extension library posted on CodeProject Icon, Contextmenu,Column and Tooltip handler in C# by ashwanisihag.

Build and Installation

  1. Open solution and build project
  2. Run the DLL to update the registry. Double click on generated DLL. A popup message will appear indicating:
    deskmenu.dll was loaded but the DllRegisterServer entry point was not found. The file can not be registered
  3. Restart Explorer. You can logout and log back in, or reboot or just kill and start explorer using task manager. If you kill and restart using Task Manager, make sure you don't exit task manager until explorer restarts. Kill explorer by selecting it in the process list and pressing the End Process button. Next click on File in the top menu bar and select New Task (Run...). Enter explorer in the text box and click on Ok. A few seconds later explorer should restart.

    taskman-kill
    taskman-restart

  4. If you rebuild the project you will have to kill explorer because it has an open handle to the dll. While you have Visual Studio ready to build the project, use task manager to kill explorer (see above). Build the DLL and then start explorer.

Using Deskmenu

When you right click on the desktop background the popup context menu should include the new DL-explorer choice. Selecting this item will launch "explorer c:\".

deskmenu-menu

The provided code has a ton of disabled code fragments which could be enabled to add additional features. Thanks to CodeProject and Ashwanishag for the shell extension library code.