How to: Use Adicionar-ins para controle Macros

O Macros de objeto na Visual Studio o modelo de automação fornece uma medida de controle programático sobre macros que está sendo gravada no ambiente de desenvolvimento integrado (IDE). Usando ele, você pode:

  • Pausar ou reiniciar o gravador de macro.

  • Adicione uma ou mais linhas de código para a macro que está sendo gravada.

  • Determine se o gravador de macro está gravando uma macro.

Você também pode usar o ExecuteCommand método diretamente emitir um comando para o IDE, tal como criar um novo arquivo.

ObservaçãoObservação

O Macros de objetos membros não são projetados para ser usado dentro de uma macro; eles só devem ser usados dentro de um suplemento.

O Visual Basic exemplo a seguir demonstra como referência e usar os vários membros do modelo de automação de Macros.

ObservaçãoObservação

As caixas de diálogo e comandos de menu demonstradas podem ser diferentes daqueles descritos na Ajuda, dependendo das configurações ativas ou configurações de edição. Esses procedimentos foram desenvolvidos com o General Development Settings ativo. Para alterar as configurações, escolha importação e Exportar configurações sobre o Ferramentas menu. Para obter mais informações, consulte Trabalhando com configurações.

Exemplo

O exemplo a seguir verifica se uma macro está sendo gravada no momento. Se for, ele adiciona uma linha extra de código para ele.

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);
    }
}

Se você gravar uma macro e abrir um arquivo de texto, este é o código de macro como seria:

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

Quando você executa o código de exemplo e fazer a mesma coisa, uma linha extra é emitida (adicionado) para o código de macro:

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

Consulte também

Tarefas

How to: Alterar Características da janela

How to: Criar um Adicionar-

Walkthrough: Criando um assistente

Conceitos

Automatizar ações repetitivas usando Macros

Automation Object Model Chart

Outros recursos

Criar e controlar o ambiente Windows

Criação de assistentes e ins Adicionar-

Automation and Extensibility Reference