Partilhar via


Como: expor um suplemento no Menu Ferramentas (Visual Basic)

Quando você cria um add-in usando o Assistente Add-In e selecione a opção para exibi-lo como um comando, o comando está no Ferramentas menu por padrão.Se você ignorar essa opção quando você cria o add-in, no entanto, você pode simplesmente executar o Assistente Add-In novamente, marque essa opção e então copie seu código existente para o novo add-in.

Se isso não for possível, porém, o procedimento a seguir realiza a mesma coisa.

ObservaçãoObservação

As caixas de diálogo e comandos de menu demonstradas podem ser diferentes daqueles descritos na Ajuda, dependendo das configurações ativas ou configurações de edição.Esses procedimentos foram desenvolvidos com o General Development Settings ativo.Para alterar as configurações, escolha importação e Exportarconfigurações sobre o Ferramentas menu.Para obter mais informações, consulte Configurações de Visual Studio.

Para adicionar um comando de menu para um suplemento existente

  1. No Connect classe de suplemento, adicione Implements IDTCommandTarget.

    Isso permite o acesso para o IDTCommandTarget interface de comandos que é necessário para a criação de comandos.

  2. No OnConnection procedimento, adicione o seguinte:

    Imports System
    Imports Microsoft.VisualStudio.CommandBars
    Imports Extensibility
    Imports EnvDTE
    Imports EnvDTE80
    
    _applicationObject = CType(application, DTE2)
    _addInInstance = CType(addInInst, AddIn)
    If connectMode = ext_ConnectMode.ext_cm_Startup Then
        Dim commands As Commands2 = CType(_applicationObject.Commands, _
          Commands2)
        Dim toolsMenuName As String
        Try
            Dim resourceManager As System.Resources.ResourceManager = _
            New System.Resources.ResourceManager _
             ("MyAddin1.CommandBar", System.Reflection.Assembly. _
             GetExecutingAssembly())
    
            Dim cultureInfo As System.Globalization.CultureInfo = New _
             System.Globalization.CultureInfo(_applicationObject. _
             LocaleID)
            toolsMenuName = resourceManager.GetString(String.Concat _
              (cultureInfo.TwoLetterISOLanguageName, "Tools"))
    
        Catch e As Exception
            toolsMenuName = "Tools"
        End Try
    
        Dim commandBars As CommandBars = _
          CType(_applicationObject.CommandBars, CommandBars)
        Dim menuBarCommandBar As CommandBar = _
          commandBars.Item("MenuBar")
    
        Dim toolsControl As CommandBarControl = _
          menuBarCommandBar.Controls.Item(toolsMenuName)
        Dim toolsPopup As CommandBarPopup = CType(toolsControl, _
          CommandBarPopup)
    
        Try
            Dim command As Command = _
              commands.AddNamedCommand2(_addInInstance, "MyAddin1", _
              "MyAddin1", "Executes the command for MyAddin1", True, _
              59, Nothing, CType(vsCommandStatus. _
              vsCommandStatusSupported, Integer) + _
              CType(vsCommandStatus.vsCommandStatusEnabled,  _
              Integer), vsCommandStyle.vsCommandStylePictAndText, _
              vsCommandControlType.vsCommandControlTypeButton)
    
           command.AddControl(toolsPopup.CommandBar, 1)
        Catch argumentException As System.ArgumentException
        End Try
    End If
    

    Esse código é executado quando o suplemento é carregado ("conectado") em Visual Studio.Ele determina se o suplemento foi carregado com um ext_ConnectMode valor de ext_cm_UISetup.Isso significa que o suplemento foi iniciado pela primeira vez desde que está sendo instalado.Se isso é verdadeiro, então um comando é criado para ele no Ferramentas menu usando o AddNamedCommand método.Para obter mais informações, consulte Como: adicionar e manipular comandos.

  3. Adicionar os dois procedimentos a seguir para o Connect classe.

    O QueryStatus método é chamado quando a disponibilidade do comando é atualizada.O Exec método é chamado quando o comando é chamado.

    Public Sub QueryStatus(ByVal commandName As String,  _
      ByVal neededText As vsCommandStatusTextWanted, ByRef status As _
      vsCommandStatus, ByRef commandText As Object) Implements _
      IDTCommandTarget.QueryStatus
        If neededText = vsCommandStatusTextWanted. _
          vsCommandStatusTextWantedNone Then
            If commandName = "MyAddin1.Connect.MyAddin1" Then
                status = CType(vsCommandStatus.vsCommandStatusEnabled _
                  + vsCommandStatus.vsCommandStatusSupported, _
                  vsCommandStatus)
            Else
                status = vsCommandStatus.vsCommandStatusUnsupported
            End If
        End If
    End Sub
    
    Public Sub Exec(ByVal commandName 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 commandName = "MyAddin1.Connect.MyAddin1" Then
                handled = True
                Exit Sub
            End If
        End If
    End Sub
    

    Cada vez que você implementa IDTCommandTarget, você deve adicionar esses dois procedimentos.Uma maneira rápida de fazer isso é selecionar IDTCommandTarget no O nome da classe caixa suspensa, no canto superior esquerdo do editor.Selecione cada procedimento separadamente a partir do Nome do método caixa drop-down no canto superior direito.Isso cria os procedimentos vazios necessários com os parâmetros corretos para o qual você pode adicionar código.

    O Exec procedimento é chamado quando um usuário clica em seu comando de menu, assim, insira o código existente ali que você deseja executar neste momento.

Consulte também

Tarefas

Como: expor um suplemento no Menu Ferramentas (Visual C#)

Como: Add-Ins de controle, usando o Gerenciador de suplemento

Como: criar um suplemento

Conceitos

Gráfico de modelo de objeto de automação