Choosing a Static or Dynamic Shortcut Menu Method
This topic is organized as follows:
- Choose a Verb Method
- Static Verb Methods
- Preferred Dynamic Verb Methods
- Discouraged Dynamic Verb Methods
- Extend a Shortcut Menu
- Support for Verb Methods by Operating System
- Related topics
Choose a Verb Method
It is strongly encouraged that you implement a shortcut menu using one of the static verb methods.
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.
Static Verb | Description |
---|---|
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. |
Note IExplorerCommand is a hybrid between a static and dynamic verb. IExplorerCommand was declared in Windows Vista, but its ability to implement a verb in a shortcut menu is new to Windows 7.
For more information about IDropTarget and Shell queries for file association attributes, see Perceived Types and Application Registration.
Preferred Dynamic Verb Methods
The following dynamic verb methods are preferred:
Verb Type | Description |
---|---|
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. |
Discouraged Dynamic Verb Methods
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.
Extend a Shortcut Menu
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 Methods by Operating System
Support for verb invocation methods by operating system are listed in the following table.
Windows XP | Windows Vista | Windows 7 and beyond | |
CreateProcess | X | X | X |
DDE | X | X | X |
DropTarget | X | X | X |
ExecuteCommand | X | X | |
ExplorerCommand | X | ||
ExplorerCommandState | X |
Related topics
Best Practices for Shortcut Menu Handlers and Multiple Selection Verbs
Creating Shortcut Menu Handlers
Customizing a Shortcut Menu Using Dynamic Verbs