Partager via


Comment : utiliser des compléments pour contrôler des macros

Mise à jour : novembre 2007

L'objet Macros du modèle Automation de Visual Studio vous donne un moyen de contrôler par programme les macros enregistrées dans l'environnement de développement intégré (IDE). À l'aide de cet objet, vous pouvez effectuer les opérations suivantes :

  • suspendre ou reprendre l'exécution de l'enregistreur de macros ;

  • ajouter une ou plusieurs lignes de code à la macro qui est enregistrée.

  • déterminer si l'enregistreur de macros est actuellement en train d'enregistrer une macro.

Vous pouvez également utiliser la méthode ExecuteCommand pour soumettre directement une commande à l'interface IDE, telle que la création d'un fichier.

Remarque :

Les membres de l'objet Macros ne sont pas conçus pour être utilisés à partir d'une macro. Ils ne doivent être utilisés qu'à partir d'un complément.

L'exemple Visual Basic suivant illustre la façon de référencer et d'utiliser les différents membres du modèle Automation Macros.

Remarque :

Selon vos paramètres actifs ou votre édition, les boîtes de dialogue et les commandes de menu que vous voyez peuvent différer de celles qui sont décrites dans l'aide. 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 ExporterParamètres dans le menu Outils. Pour plus d'informations, consultez Paramètres Visual Studio.

Exemple

L'exemple suivant vérifie si une macro est ou non actuellement enregistrée. Dans l'affirmative, il lui ajoute une ligne de code supplémentaire.

Public Sub OnConnection(ByVal application As Object, _
  ByVal connectMode As ext_ConnectMode, ByVal addInInst _
  As Object, ByRef custom As Array) Implements _
  IDTExtensibility2.OnConnection
    _applicationObject = CType(application, DTE2)
    _addInInstance = CType(addInInst, AddIn)
    macroTest(_applicationObject)
End Sub

Public Sub macroTest(ByVal dte As DTE2)
    Try
        Dim objMac As Macros = dte.Macros
        ' Determine if a macro is recording. If it is, 
        ' add a line of code to it and then let it resume 
        ' recording.
        If objMac.IsRecording = True Then
            objMac.EmitMacroCode _
              ("MsgBox(""This was added by code."")")
        Else
            MsgBox("Macro is not recording.")
        End If
    Catch ex As Exception
        MsgBox(ex.ToString)
    End Try
End Sub
public void OnConnection(object application, ext_ConnectMode 
  connectMode, object addInInst, ref Array custom)
{
    _applicationObject = (DTE2)application;
    _addInInstance = (AddIn)addInInst;
    macroTest(_applicationObject);
}

public void macroTest(DTE2 dte)
{
    try
    {
        Macros objMac = dte.Macros;
        // Determine if a macro is recording. If it is, 
        // add a line of code to it and then let it resume 
        // recording.
        if (objMac.IsRecording == true)
        {
            objMac.EmitMacroCode("MsgBox(\"This was added by 
              code.\")");
        }
        else
        {
            System.Windows.Forms.MessageBox.Show("Macro is not 
              recording.");
        }
    }
    catch (Exception ex)
    {
        System.Windows.Forms.MessageBox.Show(ex.Message);
    }
}

Si vous deviez enregistrer une macro et ouvrir un fichier texte, le code de la macro ressemblerait à ce qui suit :

Public Module RecordingModule
    Sub TemporaryMacro()
        DTE.ItemOperations.NewFile("General\Text File")
    End Sub
End Module

Lorsque vous exécutez l'exemple de code et effectuez ces mêmes opérations, une ligne supplémentaire est émise (ajoutée) dans le code de la macro :

Public Module RecordingModule
    Sub TemporaryMacro()
        DTE.ItemOperations.NewFile("General\Text File")
        MsgBox("This line was added by code.")
    End Sub
End Module

Voir aussi

Tâches

Comment : modifier les caractéristiques d'une fenêtre

Comment : créer un complément

Procédure pas à pas : création d'un Assistant

Concepts

Automatisation des actions répétitives à l'aide de macros

Graphique Modèle d'objet Automation

Autres ressources

Création et contrôle de fenêtres d'environnement

Création de compléments et d'Assistants

Guide de référence de l'extensibilité et de l'automation