Partager via


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

L'objet Macros du modèle Automation de Visual Studio vous permet de contrôler par programmation 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.

Notes

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.

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.

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