Windows supports two groups of shell extensions. The first group are registered for each type of file:
·Context menu handlers. They add items to the context menu for a particular file object. The context menu is displayed when the user clicks a file object with mouse button 2.
·Icon handlers. They typically add instance-specific icons for file objects. They can also be used to add icons for all files belonging to the same class.
·Data handlers. They provide a type-specific IDataObject interface to be passed to the OLE DoDragDrop function.
·Drop handlers. They provide type-specific drop behavior to files that can accept drag and drop objects.
·Property sheet handlers. They add pages to the property sheet dialog box that the shell displays for a file object. The pages are specific to a class of files or a particular file object.
The second group of shell extensions are associated with file operations such as move, copy, rename, and so on:
·Copy hook handlers. They are called when a folder object is about to be copied, moved, deleted, or renamed. They can either allow or prevent the operation.
·Drag and drop handlers. They are context menu handlers that the system calls when the user drops an object after dragging it to a new position.
The design of a shell extension is based on the OLE Component Object Model (COM). The shell accesses an object through interfaces. An application implements the interfaces in a shell extension dynamic-link library (DLL), which is essentially an OLE in-process server DLL.
This overview explains how to create shell extensions and describes how the shell interacts with them.