ShellPlus Customer login
Shell+ components
    Customer's area
    Flash Demo
Developer Tools
    Shell Reset Tool
Shell+ Tutorial
    Namespace Extensions
    ShortCut menu
    Property Sheet
    Icon Handler
    InfoTip Handler
    Copy Hook
    Balloon TrayIcon
    Control Panel
    Shortcut Files
    Drag&Drop Menu
    Shell Change Notify
    Articles Index
    Press Releases
    Buy now
    Resellers network
    Resellers wanted
    Contact directly
    Customer's area
    Shell+ Developers

Embarcader Technology Partner

Shell+ 2.3 release notes

   Dear customers, thank you very much for your patience in waiting for this release. I believe that all new features will justify your expectations.

  The following table is a list of all features which were implemented since 2.2b release:

   Shell+ MegaDemo example
    This demo will show you how to implement virtual file storage, based on client-server technology. This program allows you to store different files inside the single database file and provide the following features:

  •  Create folders and subfolders
  •  Drag&Drop files and folders from filesystem and other namespace extensions
  •  Drag&Drop files and folders to filesystem and other namespace extensions
  •  Delete and Rename virtual files and folders
  •  Set read-only attribute to virtual files
  •  Display overlay icon for files (read-only state)
  •  Add menu items to Explorer menu
  •  Add buttons to Explorer toolbar
  •  Display custom Properties dialog for folders and files (including original system Security page)
  •  Login dialog with timeout for logout
  •  Common dialogs support (Open/SaveAs)

    Please learn more about this demo here.

   XP themes for shell property pages
Since this version your property page extensions support Windows XP themes. They can be enabled or disabled by ActivateXPThemes property on the property page component. All native Delphi components will support visual themes without any additional work.

   Global and Local Shell change notifiers
Explorer always display up-to-date file list in all opened windows on the desktop. This is possible because Explorer and shell extensions used Shell Change Notifiers. Unfortunately it does not make development process more ease, because NSE dll will be loaded to global Explorer process and does not unloaded until you restart it. As an alternative way (only with Shell+) you can use Local Change Notifiers. Explorer will reflect changes only in current Explorer window, which is enough while you develop NSE. You can switch between change notification modes using ChangeNotifyType property of ShellView component.

   Overlay icons for namespace extensions
    You can display overlay icons for any file and folder types in your namespace extension. To do that you have to put two TSxIconList components on the PermanentModule and connect them to DataProvider.LargeOverlayIcons and DataProvider.SmallOverlayIcons properties. These two icon lists will contain images for large (32x32) and small (16x16) icons.

    Then you will handle OnGetOverlayIndex event for DataProvider component:

procedure TPermanentModule.DataProviderGetOverlayIndex(
  Sender: TSxCustomProvider; DataGrain: TSxCustomDataGrain;
  var OverlayIndex: Integer; var DisplayOverlay: Boolean);
  if ftReadOnly in DataGrain.Attributes then

    You have to specify OverlayIndex param with icon index from SxIconList component and set DisplayOverlay param to True if you want to display specified overlay icon for current grain, which specified by DataGrain parameter.

   System icons with ease
    Since this version you can display system icons for your NSE folders and files with ease, just handle DataProvider.PrepareGrainApperance event by the following way:

procedure TPermanentModule.DataProviderPrepareGrainApperance(
  Sender: TSxCustomProvider; DataGrain: TSxCustomDataGrain;
  var IconParams: TSxPrepareIconParams);

    File or folder specified by DataGrain parameter. When IconParams.UseSystemIcon equals True, Shell+ will display DataGrain with filesystem icons, obtained by its filename extension (retrieved from DataGrain.Name property).

   Different styles in toolbar buttons
Since Windows 2000 some buttons on the Explorer toolbar may be displayed with caption text:

    To allow button to display its caption on the Explorer toolbar you have to set ShowRightText property to True.

   System progress dialog support
During operations with virtual files and folders Shell+ will automatically display system progress dialog:

    But in some cases you may want to disable displaying of this dialog, for example - if you want to display your own progress dialog. It is possible with new DataProvider events:

procedure TShellImpl.ProviderNewGrainFromFileEx(Sender: TSxCustomProvider;
  FolderGrain: TSxCustomDataGrain; FileName: WideString;
  var NewGrain: TSxCustomDataGrain; var DropInfo: TSxDropInfo);

   Strong Fileclass registration with TSxFileClasses component
Sometimes, working with common fileclasses may cause some problems for developers. For example: on your development machine ".jpg" file extension registered to "jpegfile" fileclass, but on another machine, where installed some thirdparty products like Adobe Photoshop, this extension may be registered to "Photoshop.JPEGFile" fileclass. Shell+ will handle this problem automatically and your shell extension will be registered under "Photoshop.JPEGFile" fileclass. But when you need to revert file extension registration to specified fileclass (like "jpegfile") you have to set the TSxFileClass.StrongRegistration property to True.

   URL Handler component
TSxURLHandler component used to translate addresses of unknown URL protocols. Using this component you can monitor any unknown URLs which user type in Internet Explorer, modify it and pass to Internet Explorer again. The only event you have to handle is OnTranslate:

procedure TMainSxModule.SxURLHandlerTranslate(Sender: TsxCustomURLHandler;
  var URL: WideString; var Result: TSxUrlHandlerResult);
  if Result<>urlPartial then
    URL:=''+StringReplace(URL, ' ', '+', [rfReplaceAll])+'&btnI=I''m+Feeling+Lucky';


   Using URLHandler component for NSE purposes
    URL handlers is very useful to use with namespace extensions. Usually, complete NSE path look like ::{GUID1}\::{GUID2}\FolderA\FolderB\..., but after you configure appropriate properties in TSxVirtualFolder component this path will look like [test]\FolderA\FolderB\...

    This feature enabled by the following properties of TSxVirtualFolder component:

  •  TSxVirtualFolder.URLHandler.Active - enable or disable URL translation
  •  TSxVirtualFolder.CLSID - GUID of URLHandler object
  •  TSxVirtualFolder.URLIdentifier - text string, which used to substitute system-related part of URL to your NSE


   Extra-Property pages for NSEs
    Since this version you can connect any number of additional property pages to your TSxNamespacePropertySheet component using ExtraPages property. This may be your own extensions, any thirdparty extensions or system native property pages. You are welcome to contact us if you need to use any existent property page with your NSE.

   Windows Security property page
One of Extra-Property pages, which currently implemented in Shell+ is a native Security Property Page for your namespace extensions. You just need to place TSxExtraSecurityPropPage component on the PermanentModule and connect it to the ExtraPages property of TSxNamespacePropertySheet component. You have to handle several events to provide information to this component:

Requests the list of system-defined access rights, which will be requested from security descriptor.
OnGetGenericMapping Requests the generic access rights in an access mask which will be mapped to their corresponding standard and specific access rights.
OnGetSecurityDescriptor Requests the security descriptor of edited object.
OnPrepareSettings Requests different settings for security property page: Title, ReadOnly, AdvancedPermissions etc.
OnSetSecurityDescriptor When Apply or Ok button clicked, this event is called and you receive security descriptor, which was modified by user on this page.

    Please use MSDN to get more information about Security Descriptors and Access Rights. Also you can use SvCom ( to manage Security Descriptors and other related stuff by native Delphi way.

   Property page extensions for your namespace extensions
    Another kind of extra-property pages is your own property page extensions for namespace extensions. This means that you can extend functionality of your Namespace extension without modifying its code and binary files (plugins) and you can extend your virtual files and folders with any thirdparty pages. The only thing you need to know - is thirdpardy propery page CLSID.

    To implement property page extension to your NSE you have to put the TSxGrainExtensionPage component on the PermanentModule and link it to the ExtraPages property of TSxNamespacePropertySheet component. Then you have to specify what extensions to use or where to get this information:

The list of CLSIDs of known property sheet shell extensions. You can specify here any CLSID of previously developed or thirdparty extension.
RegistryLocation.CanCreate When registry path, specified by LocationPath does not exists and CanCreate equals True, this path will be created in the Registry.
RegistryLocation.LocationPath Specifies the path in the Registry, where to locate the list of extensions. For example: "*\shellex\PropertySheetHandlers"
RegistryLocation.RootKey Specifies Registry root key: sxHKEY_CLASSES_ROOT, sxHKEY_CURRENT_USER, etc.

   Built-in error handler
    Since this version Shell+ have own exceptions handler: TSxExceptionController component. You can handle exceptions manually or use existent way to display them. Shell+ will provide additional information about exception source and allow to suppress it or pass to Explorer. Unfortunately Explorer does not handle exceptions, it just ask to restart it and send exception information to Microsoft.

   New DataProvider events
This version introduce several useful events for TSxProvider component. They are:

Provide easy way to check delete permissions for your virtual file or folder and display confirmation dialog.
OnDataGrainDropEx Provide additional information to handle Drag&Drop operation. Please read more about TSxDropInfo structure below.
OnGetGrainID Allows you to improve your NSE performance. You have to specify any unique value, which identifies entity in your database or any other storage.
OnNewGrainFromFileEx Provide additional information to handle Drag&Drop operation. Please read more about TSxDropInfo structure below.
OnNewGrainFromPidlEx Provide additional information to handle Drag&Drop operation. Please read more about TSxDropInfo structure below.
OnNewGrainFromStreamEx Provide additional information to handle Drag&Drop operation. Please read more about TSxDropInfo structure below.
OnPrepareGrainApperance Allows you to improve your NSE performance by specifying what your virtual objects will use system defined icons.

    TSxDropInfo structure used with new DataProvider events to specify additional information about Drag&Drop operations:

Specifies the kind of operation what performed with DataGrain (Copy, Move, etc.)
ProgressDialogWnd Specifies the HWND value of operation progress dialog.
ExplorerWnd Specifies the HWND value of Explorer window, where this operation has performed.
ProgressDialog Contains reference to IProgressDialog interface of operation progress dialog.


   Shell debugging tool
Also released new version of ShellReset tool. It allows you to set/remove debugging options for Explorer and restart it by one click. You can download ShellReset from our Registered Users Area.

Components | Download | Purchase | Support | About Us
Copyright © 2016 ALDYN Software. All rights reserved.
Copyright © 2001 - 2011 Shell+ Development Group. All rights reserved.