Partager via


Comment : exposer un complément dans le menu Outils (Visual Basic)

Lorsque vous créez un complément en utilisant l'Assistant Complément, puis sélectionnez l'option pour l'afficher en tant que commande, la commande est placée par défaut dans le menu Outils. Si vous ignorez cette option lorsque vous créez le complément, il vous suffit d'exécuter à nouveau l'Assistant Complément, d'activer l'option, puis de copier votre code existant dans le nouveau complément.

Si vous ne pouvez pas procéder de cette manière, la procédure suivante parvient au même résultat.

Notes

Les boîtes de dialogue et les commandes de menu qui s'affichent peuvent être différentes de celles qui sont décrites dans l'aide, en fonction de vos paramètres actifs ou de l'édition utilisée. Ces procédures ont été développées avec les paramètres de développement généraux actifs. Pour modifier vos paramètres, sélectionnez Importer et Exporter Paramètres dans le menu Outils. Pour plus d'informations, consultez Utilisation des paramètres.

Pour ajouter une commande de menu à un complément existant

  1. Dans la classe Connect du complément, ajoutez Implements IDTCommandTarget.

    Vous avez ainsi accès à l'interface des commandes IDTCommandTarget, nécessaire pour créer des commandes.

  2. Ajoutez ce qui suit dans la procédure OnConnection :

    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
    

    Ce code s'exécute lorsque le complément est chargé (« connecté ») dans Visual Studio. Il détermine si le complément a été chargé avec une valeur ext_ConnectMode de ext_cm_UISetup. Cela signifie que le complément a été lancé pour la première fois depuis son installation. Si cette condition est vraie, une commande est créée pour le complément dans le menu Outils au moyen de la méthode AddNamedCommand. Pour plus d'informations, consultez Comment : ajouter et gérer des commandes.

  3. Ajoutez les deux procédures suivantes à la classe Connect.

    La méthode QueryStatus est appelée lorsque la disponibilité de la commande est mise à jour. La méthode Exec est appelée lorsque la commande est appelée.

    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
    

    À chaque fois que vous implémentez IDTCommandTarget, vous devez ajouter ces deux procédures. Une méthode rapide consiste à sélectionner IDTCommandTarget dans la zone déroulante Nom de la classe dans le coin supérieur gauche de l'éditeur. Sélectionnez ensuite, tour à tour, chaque procédure dans la zone déroulante Nom de la méthode dans le coin supérieur droit. Les procédures vides nécessaires sont alors créées avec les paramètres corrects, auxquels vous pouvez alors ajouter le code.

    La procédure Exec est appelée lorsqu'un utilisateur clique sur votre commande de menu ; aussi, insérez à cet endroit le code que vous voulez voir s'exécuter à ce moment.

Voir aussi

Tâches

Comment : exposer un complément dans le menu Outils (Visual C#)

Comment : contrôler des compléments avec le Gestionnaire de compléments

Comment : créer un complément

Concepts

Graphique Modèle d'objet Automation