Gewusst wie: Behandeln von Umgebungsereignissen in Makros

Aktualisiert: November 2007

Jedes neue Makroprojekt enthält das Modul EnvironmentEvents, das nur in der Makro-IDE sichtbar ist. Hierbei handelt es sich um ein Vorlagenelement mit einer Reihe von nützlichen, vordefinierten Ereignisprozeduren, die Sie in Makros implementieren können:

Diese Ereignisprozeduren finden Sie im Kombinationsfeld Klassenname, die zugehörigen Ereignisse im Kombinationsfeld Methodenname. Beide Felder befinden sich am oberen Rand des Code-Editors.

So fügen Sie eine vordefinierte Ereignisprozedur in ein Makro ein

  1. Doppelklicken Sie in der Makro-IDE im Explorerbereich Klassenansicht auf den Knoten EnvironmentEvents, um diesen im Makro-Editor-Bereich als EnvironmentEvents-Registerkarte und als Dropdownmenü anzuzeigen.

  2. Wählen Sie im Dropdownmenü EnvironmentEvents einen Ereignistyp aus, z. B. TaskListEvents. In das Kombinationsfeld Deklarationen werden nun die verfügbaren Aufgabenlistenereignisse geladen.

  3. Wählen Sie im Dropdownmenü Deklarationen ein Ereignis aus (z. B. TaskAdded), um dem Modul dessen Ereignisprozedur hinzuzufügen.

Das Ereignis wird in das Makro eingefügt, und Sie können der Ereignisprozedur nun Code hinzufügen.

In manchen Fällen ist es vielleicht erforderlich, dem Kombinationsfeld Klassenname weitere Ereignisprozeduren hinzuzufügen, z. B. die CommandEvents-Ereignisse.

Hinzufügen einer neuen Ereignisprozedur

So fügen Sie dem Kombinationsfeld "Klassenname" eine neue Ereignisprozedur hinzu

  1. Geben Sie im verborgenen Bereich des EnvironmentEvents-Moduls mit der Bezeichnung Automatically generated code, do not modify eine Deklaration für das Ereignis ein:

    <System.ContextStaticAttribute()> Public WithEvents CommandEvents As EnvDTE.CommandEvents
    ' This procedure handles DTEEvents.OnMacrosRuntimeReset.
    
  2. Richten Sie die OnMacrosRuntimeReset-Prozedur so ein, dass die neue Ereignisvariable jedes Mal initialisiert wird, wenn ein Makro erneut ausgeführt wird:

    Public Sub DTEEvents_OnMacrosRuntimeReset() Handles _
      DTEEvents.OnMacrosRuntimeReset
       CommandEvents = DTE.Events.CommandEvents
    End Sub
    
  3. Richten Sie die OnStartupComplete-Prozedur ein, um die Initialisierungsprozedur in Schritt 5 abzuschließen.

    Private Sub DTEEvents_OnStartupComplete() Handles_
      DTEEvents.OnStartupComplete
            CommandEvents = DTE.Events.CommandEvents
    End Sub
    
  4. Fügen Sie Code hinzu, mit dem auf das Ereignis reagiert wird. Im aktuellen Beispiel dokumentiert die Prozedur nach der Ausführung eines Befehls die Details des ausgegebenen Befehls:

    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
    

Wenn Sie ein neues Ereignis deklarieren, müssen Sie es zuerst initialisieren, bevor Sie es verwenden können. Für Makros initialisieren Sie die neue Ereignisvariable in der OnMacrosRuntimeReset-Ereignisprozedur.

Dieses Ereignis tritt immer ein, wenn die Laufzeit eines Makros zurückgesetzt wird, z. B. beim Laden oder Entfernen eines Makros. Ist dies der Fall, geht der globale Status verloren. Dadurch gehen die Werte von globalen Variablen verloren und die Verknüpfungen von Ereignishandlern werden aufgehoben, was bedeutet, dass Code, der bisher beim Eintreten eines Ereignisses ausgeführt wurde, jetzt nicht mehr ausgeführt wird.

Wenn die Laufzeit eines Makros zurückgesetzt wird, tritt das OnMacrosRuntimeReset-Ereignis auf. Dadurch können Sie Variablen und Ereignishandler immer automatisch neu initialisieren, wenn die Laufzeit eines Makros zurückgesetzt wird. Durch das Initialisieren von Ereignisvariablen und Ereignishandlern in OnMacrosRuntimeReset stellen Sie sicher, dass deren Werte bei jedem Zurücksetzen der Laufzeit eines Makros neu initialisiert werden und die neuen Ereignisprozeduren dadurch fehlerfrei funktionieren.

Siehe auch

Aufgaben

Gewusst wie: Aufzeichnen von Makros

Gewusst wie: Ausführen von Makros

Gewusst wie: Aufzeichnen von Makros

Gewusst wie: Verwalten von Makros

Gewusst wie: Verweisen auf COM- und .NET Framework-Komponenten in Makros

Konzepte

Automatisieren von wiederkehrenden Aktionen mit Makros

Debuggen von Makros

Hinweise zum Aufzeichnen und Ausführen von Makros

Hinweise zur Sicherheit und zur Freigabe von Makros