/sharpshell

SharpShell makes it easy to create Windows Shell Extensions using the .NET Framework.

Primary LanguageC#MIT LicenseMIT

SharpShell

Build status NuGet

SharpShell makes it easy to create Windows Shell Extensions using the .NET Framework.

Projects that use SharpShell

Send me a message to add a project to this list:

Deploying SharpShell Servers

There is an article on the CodeProject that describes in detail how you can use the Server Registration Manager tool to deploy SharpShell servers:

Deploying SharpShell Servers

Supported Shell Extensions

The following extensions are supported by SharpShell.

Shell Context Menus

Shell Context Menus allow the context menus used in Windows Explorer to be customised.

Shell Context Menu Screenshot

Step by Step Tutorial on the CodeProject.

Icon Handlers

Shell Icon Handlers are DLLs that are registered in the system to customise the appearance of icons.

Shell Icon Handler Screenshot

Step by Step Tutorial on the CodeProject.

Info Tip Handlers

Shell Info Tip Handlers are DLLs that are registered in the system to customise tooltips for items in the shell.

Shell Info Tip Handler Screenshot

Step by Step Tutorial on the CodeProject.

Drop Handlers

Shell Drop Handlers are DLLs that are registered in the system to extend the drag and drop functionality in the Shell.

Shell Drop Handler Screenshot

Step by Step Tutorial on the CodeProject.

Preview Handlers

Shell PreviewHandlers are dlls that can be registered in the system to allow you to create visually rich previews for items that are displayed directly in Windows Explorer.

Shell Preview Handler Screenshot

Step by Step Tutorial on the CodeProject.

Icon Overlay Handlers

Shell Icon Overlay Handlers can be really useful. They let you display an icon overlay over shell objects to provide extra information. Programs like Dropbox use these overlays to show whether files are synchronised or not.

Shell Icon Overlay Handler Screenshot

Step by Step Tutorial on the CodeProject.

Thumbnail Handlers

Shell Thumbnail Handlers (or as they're sometimes known, Shell Thumbnail Providers) are COM servers that you can write to customise the appearance of the thumbnail icons in the Windows Shell.

Shell Thumbnail Handler Screenshot

Step by Step Tutorial on the CodeProject.

Property Sheet Extensions

These are extensions that add extra pages to the property sheets shown for shell items such as files, network shares, folders and so on.

Shell Thumbnail Handler Screenshot

Step by Step Tutorial on the CodeProject.

DeskBand Extensions

Useful notes:

  • Always include a DisplayName for a deskband extension, otherwise it won't register.
  • The UserControl for deskband should specify a minimum size and maximum size - if they're not specified the actual size will be used.

Useful Resources

Below are some resources I've found useful during SharpShell development. Please get in touch if you have suggestions for more, or just make a pull request with changes to this file.

Namespace Extensions

Desk Bands

License

SharpShell is licensed under the MIT License - the details are at LICENSE.md

Testimonials

If you've used SharpShell and would like to add a testimonial, just send me a message!

CmisSync, our Dropbox-like client for Enterprise Content Management servers, just switched to SharpShell, and we are extremely pleased with this library. Our previous custom-built Windows Explorer integration was buggy, unreliable and hard to maintain, and SharpShell is really rock-solid in comparison. The best part: It only took 2 days to integrate SharpShell into our software, testing and installer included. Thanks SharpShell!

Nicolas Raoul - CmisSync.com

Developer Guide

CI/CD

CI/CD is currently handled by AppVeyor. AppVeyor will:

  1. Build the project
  2. Run the tests
  3. Create the core SharpShell Nuget Package
  4. Publish the package to nuget.org if a version tag is pushed
  5. Create a GitHub release with the package if a version tag is pushed

Some work is still needed on the CI/CD side:

  • AppVeyor config should be in the yaml file, not the web UI.
  • Look at handing the changelog more effectively, with somelike like the node release tool used in my other projects.
  • Look into automatic notifications for package publication.
  • There is stale release code in the Release folder.

Thanks

Many thanks to JetBrains for providing an Open Source License for their products!

JetBrains