Adding and Handling Commands
The following objects allow you to create, handle, and manipulate commands on Visual Studio .NET menus and toolbars.
|IDTCommandTarget interface||Provides methods to determine the status of, or execute, a command added to the IDE using the AddNamedCommand method.|
|Commands collection||Represents all of the commands in the integrated development environment (IDE).|
|Command object||Represents a command in the IDE.|
|CommandEvents object||Provides command events for Add-ins.|
|CommandBarEvents object||Provides a Click event for when a control on a command bar is clicked.|
Note If your command no longer appears on the appropriate command bar, or if you add a new command or modify an existing command, or if you would like to re-create the command, close all instances of Visual Studio .NET and double-click the file "ReCreateCommands.reg" in the folder containing the source code for your Add-in.
Using these objects, you can:
- Add or remove a command bar in the Visual Studio .NET IDE (AddCommandBar and RemoveCommandBar methods).
- Add a new named command to a toolbar or menu (AddNamedCommand method).
- Invoke a command or named command (Raise and Exec methods).
- Obtain the status of a command (CommandInfo and QueryStatus methods).
Note You cannot connect a CommandBarEvent event for CommandBar controls that were created for a new command added through
Add Named Command Example
The following example uses both the Command object and its AddNamedCommand and AddControl methods, and the IDTCommandTarget interface and its two methods (Exec and QueryStatus) to demonstrate how to make an Add-in appear as a command on the Tools menu in Visual Studio .NET.
Implements IDTCommandTarget Dim applicationObject As EnvDTE.DTE Dim addInInstance as EnvDTE.AddIn Dim objAddIn As AddIn = CType(addInInst, AddIn) Dim CommandObj As Command Try CommandObj = applicationObject.Commands.AddNamedCommand(objAddIn, "MyAddin1", "MyAddin1", "Executes the command for MyAddin1", True, 59, Nothing, 1 + 2) ' 1 + 2 == vsCommandStatusSupported + vsCommandStatusEnabled. CommandObj.AddControl(applicationObject.CommandBars.Item("Tools")) Catch e as System.Exception End Try Public Sub Exec(ByVal cmdName As String, ByVal executeOption As vsCommandExecOption, ByRef varIn As Object, ByRef varOut As Object, ByRef handled As Boolean) Implements IDTCommandTarget.Exec handled = False If (executeOption = vsCommandExecOption.vsCommandExecOptionDoDefault) Then If cmdName = "MyAddin1.Connect.MyAddin1" Then handled = True Exit Sub End If End If End Sub Public Sub QueryStatus(ByVal cmdName As String, ByVal neededText As vsCommandStatusTextWanted, ByRef statusOption As vsCommandStatus, ByRef commandText As Object) Implements IDTCommandTarget.QueryStatus If neededText = EnvDTE.vsCommandStatusTextWanted. vsCommandStatusTextWantedNone Then If cmdName = "MyAddin1.Connect.MyAddin1" Then statusOption = CType(vsCommandStatus.vsCommandStatusEnabled & vsCommandStatus.vsCommandStatusSupported, vsCommandStatus) Else statusOption = vsCommandStatus.vsCommandStatusUnsupported End If End If End Sub
Controlling Projects and Solutions | Creating and Controlling Environment Windows | Creating Add-Ins and Wizards | Creating an Add-In | Creating a Wizard | Automation and Extensibility Reference | Automation Object Model Chart