Choosing a Static or Dynamic Shortcut Menu Method
This topic is organized as follows:
- Choose a Verb Method
- Extend a Shortcut Menu
- Support for Verb Methods by Operating System
- Related topics
It is strongly encouraged that you implement a shortcut menu using one of the static verb methods.
Static verbs are the simplest verbs to implement, but they still provide rich functionality. Always chose the simplest shortcut menu method that meets your needs.
|CreateProcess with command line parameters||
This is the simplest and most familiar means of implementing a static verb. A process is invoked through a call to the CreateProcess function with the selected files and any optional parameters passed as the command line. This opens the file or folder.
This method has the following limitations:
|DropTarget/IDropTarget||A COM-based verb activation means that supports in-proc or out-of-proc activation. DropTarget/IDropTarget also supports re-use of an already running handler when the IDropTarget interface is implemented by a local server. It also perfectly expresses the items via the marshaled data object and provides a reference to the invoking site chain so that you can interact with the invoker through the QueryService.|
|Windows 7 and later: IExecuteCommand||The most direct implementation method. Because this is a COM-based invoke method (like DropTarget) this interface supports in-proc and out-of-proc activation. The verb implements IExecuteCommand and IObjectWithSelection, and optionally IInitializeCommand. The items are passed directly as a Shell item array and more of the parameters from the invoker are available to the verb implementation, including the invoke point, keyboard state, and so forth.|
|Windows 7 and later:ExplorerCommand/ IExplorerCommand||Enables data sources that provide their command module commands through IExplorerCommandProvider to use those commands as verbs on a shortcut menu. Because this interface supports in-process activation only, it is recommended for use by Shell data sources that need to share the implementation between commands and shortcut menus.|
The following dynamic verb methods are preferred:
|Static verb (listed in the previous table) + Advanced Query Syntax (AQS)||
This choice gets dynamic verb visibility.
|Windows 7 and later: IExplorerCommand||This choice enables a common implementation of verbs and explorer commands that are displayed in the command module in Windows Explorer.|
|Windows 7 and later: IExplorerCommandState + static verb||This choice also gets dynamic verb visibility. It is a hybrid model where a simple in-process handler is used to compute if a given static verb should be displyed. This can be applied to all of the static verb implementation methods to achieve dynamic behavior and minimize the exposure of the in-process logic. IExplorerCommandState has the advantage of running on a background thread, and thereby avoids UI hangs. It is considerably simpler than IContextMenu.|
IContextMenu is the most powerful but also the most complicated method to implement. It is based on in-process COM objects that run on the thread of the caller, which usually Windows Explorer but can be any application hosting the items. IContextMenu supports verb visibility, ordering, and custom drawing. Some of these features have been added to the static verb features, such as an icon to be associated with a command, and IExplorerCommand to deal with visibility.
If you must extend the shortcut menu for a file type by registering a dynamic verb for the file type, then follow the instructions provided in Customizing a Shortcut Menu Using Dynamic Verbs.
After you choose a verb method you can extend a shortcut menu for a file type by registering a static verb for the file type. For more information, see Creating Context Menu Handlers.
Support for verb invocation methods by operating system are listed in the following table.
|Windows XP||Windows Vista||Windows 7 and beyond|
- Best Practices for Shortcut Menu Handlers and Multiple Selection Verbs
- Creating Shortcut Menu Handlers
- Customizing a Shortcut Menu Using Dynamic Verbs
- Shortcut (Context) Menus and Shortcut Menu Handlers
- Shortcut Menu Reference
- Verbs and File Associations