Partager via


Comment : gérer EnvironmentEvents dans les macros

Chaque nouveau projet macro comporte un module appelé EnvironmentEvents, qui n'est visible que dans l'éditeur de macros. Ce module est un élément modèle contenant des procédures événementielles prédéfinies que vous pouvez implémenter dans vos macros, et notamment :

Vous pouvez consulter ces procédures événementielles dans les explorateurs d'objets de l'éditeur de code.

Pour insérer une procédure événementielle prédéfinie dans votre macro

  1. Dans le volet d'explorateur Affichage de classes, dans l'éditeur de macros, double-cliquez sur le nœud EnvironmentEvents pour l'afficher sous la forme d'un onglet EnvironmentEvents et d'un menu déroulant dans le volet de l'éditeur de macros.

  2. Dans le menu déroulant EnvironmentEvents, sélectionnez un type d'événement, tel que TaskListEvents. La zone de liste déroulante Déclarations contient maintenant les événements TaskListEvents disponibles.

  3. Dans le menu déroulant Déclarations, sélectionnez un événement, tel que TaskAdded, pour ajouter sa procédure événementielle au module.

L'événement a été inséré dans votre macro ; vous pouvez maintenant ajouter le code à la procédure événementielle.

Il se peut que vous souhaitiez dans certains cas ajouter plusieurs procédures événementielles à la zone de liste déroulante Nom de la classe, par exemple les événements CommandEvents.

Ajout d'une nouvelle procédure événementielle

Pour ajouter une nouvelle procédure événementielle à la zone de liste déroulante Nom de la classe

  1. Entrez la déclaration de l'événement après la zone masquée du module EnvironmentEvents nommée « Code généré automatiquement, ne pas modifier » :

    <System.ContextStaticAttribute()> Public WithEvents CommandEvents As EnvDTE.CommandEvents
    ' This procedure handles DTEEvents.OnMacrosRuntimeReset.
    
  2. Définissez la procédure OnMacrosRuntimeReset de sorte que la nouvelle variable d'événement soit initialisée à chaque exécution d'une macro :

    Public Sub DTEEvents_OnMacrosRuntimeReset() Handles _
      DTEEvents.OnMacrosRuntimeReset
       CommandEvents = DTE.Events.CommandEvents
    End Sub
    
  3. Configurez la procédure OnStartupComplete pour effectuer la procédure d'initialisation de l'étape 5.

    Private Sub DTEEvents_OnStartupComplete() Handles_
      DTEEvents.OnStartupComplete
            CommandEvents = DTE.Events.CommandEvents
    End Sub
    
  4. Ajoutez le code de réponse à l'événement. Dans cet exemple, à la fin de l'exécution d'une commande, la procédure affiche les détails de la commande exécutée :

    Public Sub CommandEvents_AfterExecute(ByVal Guid As String, ByVal ID As Integer, ByVal CustomIn As Object, ByVal CustomOut as Object) Handles CommandEvents.AfterExecute
       MsgBox(DTE.Commands.Item(Guid, ID).Name)
    End Sub
    

Lorsque vous déclarez un nouvel événement, vous devez l'initialiser préalablement à son utilisation. Pour les macros, l'initialisation de la nouvelle variable d'événement s'effectue dans la procédure événementielle OnMacrosRuntimeReset.

Cet événement se produit dès que le runtime d'une macro est réinitialisé, par exemple lors du chargement ou du déchargement de la macro. Dans ce cas-là, l'état global est perdu. En d'autres termes, les valeurs des variables globales ne sont pas conservées et les gestionnaires d'événements ne sont plus raccordés aux événements ; par conséquent, le code qui était auparavant exécuté au déclenchement d'un événement donné ne s'exécute plus.

Lorsque le runtime d'une macro est réinitialisé, l'événement OnMacrosRuntimeReset se produit. Cela vous permet de réinitialiser automatiquement les variables et les gestionnaires d'événements à chaque réinitialisation du runtime d'une macro. L'initialisation des variables et gestionnaires d'événements dans OnMacrosRuntimeReset permet de s'assurer que leurs valeurs sont réinitialisées à chaque réinitialisation du runtime d'une macro et donc, que vos nouvelles procédures événementielles fonctionnent correctement.

Voir aussi

Tâches

Comment : enregistrer des macros

Comment : exécuter des macros

Comment : enregistrer des macros

Comment : gérer des macros

Comment : référencer des composants COM et .NET Framework au sein des macros

Concepts

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

Débogage des macros

Problèmes liés à l'enregistrement ou à l'exécution des macros

Problèmes liés au partage et à la sécurité des macros