~~Title: ContextMenu~~
The **ContextMenu** command can be used to:
* Display a list of the context menu commands that are available for selected files, and
* Trigger a context menu command for selected files without needing to first display the context menu (so you can, for example, configure a button or hotkey to execute a command that is normally only available from the context menu)
The first step in using the **ContextMenu** command is to select the file (or a file of the type) in question and use the **SHOWCMDS** argument to view the available context menu commands. The easiest way to do this (unless you want to set up a button dedicated to this) is to use the **[[:basic_concepts:the_lister:find-as-you-type_field|find-as-you-type]]** field in **Command** mode.
{{:media:contextmenu_via_fayt.png?nolink|}}
Opus will display a dialog containing a list of the available context menu commands. Context menu commands have an ID number and some may also have a "verb" - a plain text string that you can use to invoke the command. If a command has a verb displayed you should use this in preference to the ID, as it's possible for the ID number to change if additional context menu extensions are installed. You can also trigger a command by its label using the **LABEL** and **LABELRAW** arguments (and these can optionally use wildcards or regular expressions).
{{:media:contextmenucmds.png?nolink|}}
The //Context Menu Commands// dialog can automatically create a command line for you - right-click on the command in question, or click the **Copy Command** button to copy the command line to the clipboard.
You can see from this example that the list of commands has been filtered to show only those containing the string "sync" - this has returned two, which are Dropbox Smart Sync commands. The first one has a verb and the second one, for some reason, doesn't. Because the verb isn't consistent it might be better to use the label to trigger this command; for example, you could use **ContextMenu LABEL="Smart Sync\Local"** to run the first command and **ContextMenu LABEL="Smart Sync\Online Only"** to run the second.
Once you know what the verb, label or ID is for the command you want to automate, you can configure your button or hotkey with the appropriate **ContextMenu** command.
**Command Arguments:**
$$ Argument
$$ Type
$$ Possible values
$$ Description
$$ CTRL
$$ /S
$$ //(no value)//
$$ When invoking a context menu command, tells the command handler to act as if the Ctrl key is held down. What difference this makes (if any) is up to the handler.
``ContextMenu CTRL VERB="delete"``
$$ EXTENDEDVERBS
$$ /S
$$ //(no value)//
$$ Enables support for //extended verbs//. These are context menu commands that are normally only displayed when the **Shift** key is held down.
``ContextMenu SHOWCMDS EXTENDEDVERBS``
If you use this while invoking a command, you will probably also want to specify the **SHIFT** argument.
``ContextMenu EXTENDEDVERBS SHIFT VERB="delete"``
$$ FILE
$$ /K/M
$$ //, ...//
$$ Specify the file or files to operate on. If not specified the command will operate on all currently selected files.
You can use this to execute commands on non-filesystem items, for example the Recycle Bin. To do this requires knowing the item's GUID, which unfortunately is beyond the scope of this help file - but as an example, the GUID for the Recycle Bin is **{645FF040-5081-101B-9F08-00AA002F954E}.** The following command will execute the "empty" verb on the Recycle Bin, causing it to empty.
``ContextMenu FILE=::{645FF040-5081-101B-9F08-00AA002F954E} VERB=empty``
$$ ID
$$ /K/N
$$ ////
$$ Specify the ID of the context menu command to execute.
You should use an item's verb or label (in that order, if it has either) in preference to its ID, because the ID may change (with the old ID potentially representing a completely different action) when you add or remove software, or even each time the menu is used.
``ContextMenu ID=79``
$$ ITEMMENU
$$ /O
$$ //(no value =// **yes**//)//**\\
no**
$$ (Windows Vista and above. Has no effect on Windows XP.)
Note that by default this option is //on// unless the command is being invoked from a background context menu. You can specify the argument yourself (with either **yes** or **no** parameters) if you wish but normally the default behaviour will be acceptable.
**ITEMMENU** mode indicates that you wish to list or invoke context menu commands in the same way as when a file or folder is right-clicked. Without **ITEMMENU** mode you can usually only list or run commands which only appear when you right-click the background of a folder window.
The exact difference (if any) that **ITEMMENU** makes is up to the individual command handlers. As with the **EXTENDEDVERBS** argument, some handlers will filter their menu items in or out depending on the mode.
``ContextMenu ITEMMENU=yes VERB="PreviousVersions"``
$$ LABEL
$$ /K
$$ //