방법: 추가 기능을 사용하여 매크로 제어

Visual Studio 자동화 모델의 Macros 개체를 사용하면 IDE(통합 개발 환경)에서 기록되는 매크로를 프로그래밍 방식으로 제어할 수 있습니다. 이 개체를 사용하여 다음 작업을 수행할 수 있습니다.

  • 매크로 리코더를 일시 중지하거나 다시 시작

  • 기록 중인 매크로에 하나 이상의 코드 줄 추가

  • 매크로 리코더가 현재 매크로를 기록 중인지 여부 확인

또한 ExecuteCommand 메서드를 사용하여 IDE에 새 파일 작성과 같은 명령을 직접 보낼 수 있습니다.

참고

Macros 개체 멤버는 매크로 내에서는 사용할 수 없으며 추가 기능 내에서만 사용할 수 있도록 되어 있습니다.

아래의 Visual Basic 예제에서는 매크로 자동화 모델의 다양한 멤버를 참조하고 사용하는 방법을 보여 줍니다.

참고

표시되는 대화 상자와 메뉴 명령은 활성 설정이나 버전에 따라 도움말에서 설명하는 것과 다를 수 있습니다. 이러한 절차는 일반 개발 설정을 사용하여 개발되었습니다. 설정을 변경하려면 도구 메뉴에서 설정 가져오기 및 내보내기를 선택합니다. 자세한 내용은 설정에 대한 작업을 참조하십시오.

예제

다음 예제에서는 매크로가 현재 기록되고 있는지 여부를 검사합니다. 매크로가 기록되고 있으면 이 매크로에 코드 줄을 추가합니다.

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

매크로를 기록하는 동안 텍스트 파일을 열면 다음과 같은 매크로 코드가 작성됩니다.

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

예제 코드를 실행하고 동일한 작업을 수행하면 매크로 코드에 다른 줄이 더 추가됩니다.

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

참고 항목

작업

방법: 창 특성 변경

방법: 추가 기능 만들기

연습: 마법사 만들기

개념

매크로를 사용하여 반복 작업 자동화

자동화 개체 모델 차트

기타 리소스

환경 창 만들기 및 제어

추가 기능 및 마법사 만들기

자동화 및 확장성 참조