방법: 매크로에서 환경 이벤트 처리
모든 새 매크로 프로젝트에는 EnvironmentEvents라는 모듈이 있으며 이 모듈은 매크로 IDE에서만 볼 수 있습니다. EnvironmentEvents는 다음과 같이 매크로에서 구현할 수 있는 여러 가지 미리 정의된 유용한 이벤트 프로시저를 포함하는 템플릿 항목입니다.
코드 편집기의 개체 브라우저에서 이러한 이벤트 프로시저를 볼 수 있습니다.
미리 정의된 이벤트 프로시저를 매크로에 삽입하려면
매크로 IDE의 클래스 뷰 탐색기 창에서 EnvironmentEvents 노드를 두 번 클릭하여 해당 노드를 매크로 편집기 창에 EnvironmentEvents 탭과 드롭다운 메뉴로 표시합니다.
EnvironmentEvents 드롭다운 메뉴에서 TaskListEvents와 같은 이벤트 형식을 선택합니다. 선언 콤보 상자에 사용 가능한 작업 목록 이벤트가 채워집니다.
선언 드롭다운 메뉴에서 TaskAdded와 같은 이벤트를 선택하여 해당 이벤트의 이벤트 프로시저를 모듈에 추가합니다.
이벤트가 매크로에 삽입되고 이제 이벤트 프로시저에 코드를 추가할 수 있습니다.
클래스 이름 콤보 상자에 CommandEvents 이벤트와 같은 이벤트 프로시저를 더 추가할 수도 있습니다.
새 이벤트 프로시저 추가
클래스 이름 콤보 상자에 새 이벤트 프로시저를 추가하려면
"자동 생성된 코드입니다. 수정하지 마십시오."라는 레이블이 붙어 있는 EnvironmentEvents 모듈의 숨겨진 영역 다음에 이벤트 선언을 입력합니다.
<System.ContextStaticAttribute()> Public WithEvents CommandEvents As EnvDTE.CommandEvents ' This procedure handles DTEEvents.OnMacrosRuntimeReset.
매크로를 다시 실행할 때마다 새 이벤트 변수가 초기화되도록 OnMacrosRuntimeReset 프로시저를 설정합니다.
Public Sub DTEEvents_OnMacrosRuntimeReset() Handles _ DTEEvents.OnMacrosRuntimeReset CommandEvents = DTE.Events.CommandEvents End Sub
OnStartupComplete 프로시저를 설정하여 5단계의 초기화 절차를 완료합니다.
Private Sub DTEEvents_OnStartupComplete() Handles_ DTEEvents.OnStartupComplete CommandEvents = DTE.Events.CommandEvents End Sub
이벤트에 응답하도록 코드를 추가합니다. 이 예제에서는 명령을 실행한 후 발생한 명령에 대한 자세한 내용이 보고됩니다.
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
새 이벤트를 선언하는 경우 이벤트를 사용할 수 있도록 먼저 초기화해야 합니다. 매크로의 경우 OnMacrosRuntimeReset 이벤트 프로시저에서 새 이벤트 변수를 초기화합니다.
이 이벤트는 매크로를 로드하거나 언로드하는 경우와 같이 매크로의 런타임을 다시 설정할 때마다 발생합니다. 이 이벤트가 발생하면 전역 상태가 손실됩니다. 즉, 전역 변수의 값이 손실되고 이벤트 처리기가 언후크됩니다. 이는 이벤트가 발생하는 경우 이전에 실행된 코드가 더 이상 실행되지 않는다는 것을 의미합니다.
매크로의 런타임이 다시 설정되면 OnMacrosRuntimeReset 이벤트가 발생합니다. 따라서 매크로 런타임이 다시 설정될 때마다 변수와 이벤트 처리기를 자동으로 다시 초기화할 수 있습니다. OnMacrosRuntimeReset에서 이벤트 변수와 처리기를 초기화하면 매크로의 런타임이 다시 설정될 때마다 해당 값이 다시 초기화되므로 결과적으로 새 이벤트 프로시저가 제대로 동작합니다.
참고 항목
작업
방법: 매크로에서 COM 및 .NET Framework 구성 요소 참조