Compartir a través de


Cómo: Controlar los eventos de entorno en macros

Actualización: noviembre 2007

Cada nuevo proyecto de macros incluye un módulo denominado EnvironmentEvents, que sólo es visible en el IDE de macros. Es un elemento de plantilla que contiene varios procedimientos de evento predefinidos útiles que puede implementar en sus macros, concretamente:

Puede ver estos procedimientos de evento en el cuadro combinado Nombre de clase y sus eventos en el cuadro combinado Nombre de método. Los dos cuadros combinados se encuentran en la parte superior del editor de código.

Para insertar un procedimiento de evento predefinido en la macro

  1. En el panel de explorador Vista de clases, en el IDE de macros, haga doble clic en el nodo EnvironmentEvents para que aparezca como ficha EnvironmentEvents y como menú desplegable en el panel Editor de macros.

  2. En el menú desplegable EnvironmentEvents, seleccione un tipo de evento, como TaskListEvents. El cuadro combinado Declaraciones se rellena con los eventos disponibles en Lista de tareas.

  3. En el menú desplegable Declaraciones, seleccione un evento (por ejemplo, TaskAdded) para agregar su procedimiento de evento al módulo.

El evento se inserta en la macro y ahora puede agregar código al procedimiento de evento.

En algunos casos puede resultar conveniente agregar más procedimientos de evento al cuadro combinado Nombre de clase, por ejemplo los eventos CommandEvents.

Agregar un procedimiento de evento nuevo

Para agregar un nuevo procedimiento de evento al cuadro combinado Nombre de clase

  1. Escriba una declaración para el evento después de la región oculta del módulo EnvironmentEvents con etiqueta "Automatically generated code, do not modify":

    <System.ContextStaticAttribute()> Public WithEvents CommandEvents As EnvDTE.CommandEvents
    ' This procedure handles DTEEvents.OnMacrosRuntimeReset.
    
  2. Configure el procedimiento OnMacrosRuntimeReset para que la nueva variable de evento se inicialice cada vez que se vuelva a ejecutar una macro:

    Public Sub DTEEvents_OnMacrosRuntimeReset() Handles _
      DTEEvents.OnMacrosRuntimeReset
       CommandEvents = DTE.Events.CommandEvents
    End Sub
    
  3. Establezca el procedimiento OnStartupComplete para finalizar el procedimiento de inicialización del paso 5.

    Private Sub DTEEvents_OnStartupComplete() Handles_
      DTEEvents.OnStartupComplete
            CommandEvents = DTE.Events.CommandEvents
    End Sub
    
  4. Agregue código para responder al evento. En este ejemplo, después de ejecutar un comando, este procedimiento informa de los detalles del comando que se ha emitido:

    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
    

Cuando declare un nuevo evento, primero debe inicializarlo para poder utilizarlo. Para las macros, la ubicación para inicializar la nueva variable de evento se encuentra el procedimiento de evento OnMacrosRuntimeReset.

Este evento se produce siempre que se restablece el tiempo de ejecución de una macro, como cuando una macro se carga o se descarga. Cuando ocurre, existe una pérdida del estado global. Es decir, los valores de las variables global se pierden y se eliminan los enlaces de los controles de eventos, lo que significa que el código que se ejecutaba anteriormente cuando se producía un evento ya no se ejecuta.

Cuando se restablece el tiempo de ejecución de una macro, se produce el evento OnMacrosRuntimeReset. Esto permite volver a inicializar variables y controles de eventos automáticamente siempre que se produzca un restablecimiento del tiempo de ejecución de una macro. Mediante la inicialización de controles y variables de evento en OnMacrosRuntimeReset, se garantiza que sus valores se vuelven a inicializar cada vez que se restablece el tiempo de ejecución de la macro y, por consiguiente, que los nuevos procedimientos de evento funcionan correctamente.

Vea también

Tareas

Cómo: Grabar macros

Cómo: Ejecutar macros

Cómo: Grabar macros

Cómo: Administrar macros

Cómo: Hacer referencia a componentes COM y .NET Framework en macros

Conceptos

Automatizar acciones repetitivas mediante macros

Depurar macros

Cuestiones relativas a la grabación y ejecución de macros

Cuestiones de seguridad de macros y de recursos compartidos