Welcome to EasyNSE.

NOTICE:  Dec, 7, 2007

The EasyNSE package is not Vista or IE7 ready and I am not sure if I will ever get back to updating it either.  Please treat EasyNSE as a minimally supported package.  You are free to use it to learn about shell extensions and namespace extensions but I would not use it in production code.

 

 

ShellExtView is an invaluable tool when working with EasyNSE.  It shows what shell extensions and handler are installed on your system and allows you to maniulate them through the UI.  Download it here.

 

EasyNSE is a component package for Delphi 5-D2005 that takes the difficulty out of writing code to interact with Windows Explorer and the Shell.

Components

There are two basic levels of interacting with the Shell

  • Shell Extension Handlers *Available now* - Shell Handlers are DLLs that allows customization of existing aspects of the shell. Below are the different types of handlers currently supported by Windows. Note: not all handers are supported in all versions of Windows. Look on the Microsoft MSDN site for the latest documentation on shell handers.

 

Windows Explorer Support:

  • Drop Handler - Add clipboard formats to a file object when it is copied to the clipboard or dragged and dropped. At first this seems like not a very useful extension but check out the demo. This one has a lot of possibilities. Thanks to Constantine for the great idea for the demo.

  • Drag and Drop Handler - Add menu items to the action context menu shown when you right button drag and drop a shell object.
  • Drop Handler - Allows files to become drop targets. Think of a zip file where you drag a file and drop it onto the zip to archive it. This is also how items are handled in the Send To context menu item. I will show how to do this at a later date.
  • CopyHook Handler - Hook in to Folder and Printer Moves, Copies, Deletes and Renames and either allow, deny any single action in multiple actions, or cancel all the actions.
  • Context Menu Handler - Add new menu items to the right click popup menu in Explorer in minutes!

    • Uses an EasyNSE exclusive menu editor to build the menu instead of the built in menu editor and TMenuItem. Why you ask?

      1.  TMenuItem was not designed with a shell extension in mind. Delphi menu items are assigned an ID automatically, in a shell extension Explorer defines the valid ID's for each item. To work around this is a major hack.

      2. By adding the Menus unit to the project the Forms unit gets pulled in along with it bloating the DLL. With EasyNSE a fully functional context menu DLL can be as small as 200k (with a little more work and conditional defines this number can be <180k) with D7.

    • Full support for IContextMenu2 and owner draw menu items. See the demo!

  • Column Handler - Add Columns to Explorer's Listview in Win2k/WinME and greater.

  • ExtractIcon Handler - Change Shell object Icons to use your own.
  • IconOverlay Handler - Add Custom Overlay images to objects, like the shortcut arrow and share hand.
  • Property Sheet Handler - Add property sheet pages to objects, this is implemented with Delphi form. The shell uses up to 4 UI thread with property sheets from what I can tell and the VCL is not thread safe. Also creating Forms in DLL's is questionable work anyway. Use at your own risk!
  • QueryInfo Handler - Customize the information shown in the popup window when hovering over an object
  • Thumbnail Handler - Add Custom images for objects when in thumbnail view
  • ShellBands - Add custom bands to the Taskbar, like the QuickLaunch bar

Internet Explorer Support:

  • Comm Bands - Horizontal Windows in the Explorer Frame, IE 4.0 and up

  • Info Bands - Vertical Windows in the Explorer Frame like the Favorites bar, IE 4.0 and up
  • Tool Bands - Controls in the Rebar components at the top of Explorer, IE 5.0 and up
  • Add Custom Buttons to the Toolbar
  • Add Custom Menu Items to the Tools main menu item.

 

  • Namespace Extensions *Now Available* - NameSpace Extensions (NSE's) allows DLL's to become part of the shell. A new branch in the Explorer left-side treeview is created and you may show any type of data and sub-branches. This type of interaction with the Shell is riddled with complexity, incorrect documentation and bugs in the Shell. EasyNSE will allow the implementation of a NSE without the need to worry about these hurdles.

  • Below is a NSE that was created with EasyNSE to display the Registery of the host computer.  It is implemented in only a few hundred lines of code, including property sheets and edit capabilities.

The lastest version can be download from the Download page.

 


mustangpeak.net

  Last Modified on: