Como: Usar Add-ins para controle macros

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

  • Pausar ou continuar a gravação de macro.

  • Adicione um 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 para emitir um comando diretamente ao IDE, tal sistema autônomo criar um novo arquivo.

Observação:

O Macros membros do objeto não são foi criados para ser usado dentro de uma macro; só deve ser usados dentro de um suplemento.

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

Observação:

As caixas de diálogo e comandos de menu demonstradas podem ser diferentes daqueles descritas na Ajuda, dependendo das configurações ativas ou configurações de edição.Esses procedimentos foram desenvolvidos com o Geral Development Settings ativo.Para alterar as configurações, escolher Import and ExportSettings on the Tools menu.Para obter mais informações, consulte Configurações do Visual Studio.

Exemplo

O exemplo a seguir verifica se uma macro está sendo gravada atualmente.Se for, 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 em em aberto 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ê executar o código de exemplo e fazer o mesmo, 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

Como: Alterar características de janela

Como: Criar um suplemento

Demonstra Passo a passo: Criando um assistente

Conceitos

Automatizando Repetitive Actions by Using Macros

Gráfico do modelo de objetos de automação

Outros recursos

Criando e controlando o ambiente Windows

Criando suplementos e assistentes

Automação e referência a extensibilidade