다음을 통해 공유


방법: 매크로에서 특정 프로젝트 형식에 대한 이벤트 처리기 만들기

업데이트: 2007년 11월

모든 매크로 프로젝트에 포함되어 있는 EnvironmentEvents 템플릿에는 몇 가지 미리 선언된 이벤트 처리기가 들어 있습니다. 이러한 이벤트 처리기는 창 닫기 등과 같은 여러 가지 환경 이벤트에 대한 응답으로 구현할 수 있습니다. 구현이 제공되면 이러한 일반 확장성 이벤트 처리기는 Visual Studio IDE(통합 개발 환경)에서 지정된 이벤트가 발생할 때마다 이를 자동으로 가로챕니다. 자세한 내용은 방법: 매크로에서 환경 이벤트 처리를 참조하십시오.

고유한 IDE 이벤트 처리기를 EnvironmentEvents 템플릿에 추가할 수도 있습니다. 이벤트 변수를 선언하고, 이벤트 처리기 코드를 제공하고 OnMacrosRuntimeResetOnStartupComplete 처리기를 추가하여 Visual Studio IDE에서 이벤트 가로채기를 자동화할 수 있습니다.

이 예제에서는 Visual C#, Visual Basic 또는 Visual J# 프로젝트에 참조를 추가할 때 실행되는 ReferencesEvents 이벤트 처리기를 추가합니다.

참고:

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

매크로에 VSLangProj 이벤트 처리기를 추가하려면

  1. 매크로 IDE에서 프로젝트 메뉴의 참조 추가를 클릭합니다.

  2. 참조 추가 대화 상자에서 VSLangProj를 선택하고 추가를 클릭한 다음 확인을 클릭합니다.

  3. 매크로 IDE의 클래스 뷰 탐색기 창에서 MyMacros를 확장하고 EnvironmentEvents를 두 번 클릭하여 매크로 편집기 창에 표시합니다.

  4. EnvironmentEvents 모듈의 맨 위에 다음 코드를 추가합니다.

    Imports VSLangProj
    
  5. "자동 생성된 코드 - 수정하지 마십시오."라는 레이블이 붙어 있는 EnvironmentEvents 모듈의 숨겨진 영역 다음에 이벤트 선언을 입력합니다.

    <System.ContextStaticAttribute()> Public WithEvents refEvents As VSLangProj.ReferencesEvents
    

    이 선언을 입력하면 ReferencesEvents 및 이 클래스의 메서드가 매크로 IDE 코드 편집기의 클래스 이름 및 메서드 이름 드롭다운 상자에 추가됩니다.

  6. 클래스 이름 드롭다운 상자에서 DTEEvents 클래스를 선택하고, 메서드 이름 드롭다운 상자에서 OnMacrosRuntimeResetOnStartupComplete 메서드를 선택합니다.

    이렇게 하면 이 두 이벤트에 대한 이벤트 처리기가 작성됩니다. 이러한 이벤트 처리기는 Visual Studio IDE에서 이벤트가 발생할 때마다 ReferencesEvents 처리기가 이를 자동으로 가로채는 데 필요합니다.

  7. 다음과 같이 EnvironmentEvents.refEvents 캐스트를 추가하여 이벤트 처리기를 수정합니다. Visual Basic 또는 Visual J# 프로젝트에 참조가 추가될 때 이벤트를 가로채려면 CSharpReferencesEvents 문자열을 각각 VBReferencesEvents 또는 VJSharpReferencesEvents로 바꿉니다.

    Public Sub DTEEvents_OnMacrosRuntimeReset() Handles_
     DTEEvents.OnMacrosRuntimeReset
            EnvironmentEvents.refEvents_        =CType(DTE.Events.GetObject("CSharpReferencesEvents")_        , ReferencesEvents)
    End Sub
    

    Private Sub DTEEvents_OnStartupComplete() Handles_
     DTEEvents.OnStartupComplete
            EnvironmentEvents.refEvents_        = CType(DTE.Events.GetObject("CSharpReferencesEvents")_        , ReferencesEvents)
    End Sub
    
  8. 마지막으로, EnvironmentEvents 모듈에 다음 코드를 붙여넣거나 클래스 이름 드롭다운 상자에서 refEvents를 선택하고 메서드 이름 드롭다운 상자에서 ReferenceAdded를 선택하여 이벤트 처리기를 만듭니다. 다음과 같이 이벤트 처리기에 MsgBox(pReference.Name & " was added to the project.") 줄을 추가합니다.

    Public Sub refEvents_ReferenceAdded(ByVal pReference As VSLangProj.Reference) Handles refEvents.ReferenceAdded
            MsgBox(pReference.Name & " was added to the project.")
    End Sub
    
  9. 이벤트 처리기를 테스트하려면 종류에 상관없이 새 Visual C# 프로젝트를 만듭니다.

    프로젝트 템플릿에 자동으로 추가되는 각 참조에 대해 메시지 상자가 나타납니다.

예제

이 코드는 전체 예제를 보여 줍니다. 아래 코드를 매크로 프로젝트의 EnvironmentEvents 모듈에 붙여넣을 수 있습니다.

참고:

이 이벤트 처리기를 추가하면 지정된 프로젝트 형식에 참조가 추가될 때마다 이 처리기가 실행됩니다. 참조가 추가될 때마다 알림 메시지가 표시되지 않도록 하려면 이 코드를 주석으로 처리합니다.

<System.ContextStaticAttribute()> Public WithEvents refEvents As VSLangProj.ReferencesEvents
Public Sub DTEEvents_OnMacrosRuntimeReset() Handles_
 DTEEvents.OnMacrosRuntimeReset
        EnvironmentEvents.refEvents= _        CType(DTE.Events.GetObject("CSharpReferencesEvents")_        , VSLangProj.ReferencesEvents)
End Sub
Private Sub DTEEvents_OnStartupComplete() Handles_
 DTEEvents.OnStartupComplete
        EnvironmentEvents.refEvents = _        CType(DTE.Events.GetObject("CSharpReferencesEvents")_        , VSLangProj.ReferencesEvents)
End Sub
Public Sub refEvents_ReferenceAdded(ByVal pReference As VSLangProj.Reference) Handles refEvents.ReferenceAdded
        MsgBox(pReference.Name & " was added to the project.")
End Sub

참고 항목

작업

방법: 매크로에서 이벤트 처리

방법: 자동화 이벤트 처리(Visual Basic)

방법: 자동화 이벤트 처리(Visual C#)

기타 리소스

이벤트에 응답(Visual Basic 및 Visual C# 프로젝트)

자동화 이벤트에 응답