Share via


HOW TO:處理巨集中的環境事件

每個新巨集專案都包括稱為 [EnvironmentEvents] 的模組,在 [巨集 IDE] 內才能看到此模組。 這是一個樣板項目,其中包含許多預先定義的有用事件程序,可讓您在巨集中實作,尤其是:

您可以使用程式碼編輯器中的物件瀏覽器來檢視這些事件程序。

若要將預先定義的事件程序插入巨集中

  1. 在 [巨集 IDE] 中的 [類別檢視] 總管窗格上,按兩下 [EnvironmentEvents] 節點以顯示 [EnvironmentEvents] 索引標籤和巨集編輯器窗格中的下拉式功能表。

  2. 從 [EnvironmentEvents] 下拉式功能表選擇事件型別,例如 [TaskListEvents]。 [宣告] 下拉式方塊現在已經填入可用的 [工作清單] 事件。

  3. 在 [宣告] 下拉式功表中選擇事件,例如 [TaskAdded],將其事件程序加入模組。

此事件將插入巨集中,現在可以將程式碼加入事件程序中。

在某些狀況下,可能要加入更多事件程序至 [類別名稱] 下拉式方塊中,例如 CommandEvents 事件。

加入新事件程序

若要將新事件程序加入類別名稱下拉式方塊中

  1. 在標記 "Automatically generated code, do not modify" 的 EnvironmentEvents 模組的隱藏區域後輸入事件宣告:

    <System.ContextStaticAttribute()> Public WithEvents CommandEvents As EnvDTE.CommandEvents
    ' This procedure handles DTEEvents.OnMacrosRuntimeReset.
    
  2. 設定 OnMacrosRuntimeReset 程序,使得每次重新執行巨集時都初始化新的事件變數:

    Public Sub DTEEvents_OnMacrosRuntimeReset() Handles _
      DTEEvents.OnMacrosRuntimeReset
       CommandEvents = DTE.Events.CommandEvents
    End Sub
    
  3. 設定 OnStartupComplete 程序以完成步驟 5 中的初始化程序。

    Private Sub DTEEvents_OnStartupComplete() Handles_
      DTEEvents.OnStartupComplete
            CommandEvents = DTE.Events.CommandEvents
    End Sub
    
  4. 加入程式碼以回應此事件。 在此範例中,執行命令之後,此程序會報告發出之命令的詳細資料:

    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 中的事件變數和處理常式,可確定每次重設巨集的執行階段時都會重新初始化其值,因此新的事件程序得以正確運作。

請參閱

工作

HOW TO:錄製巨集

HOW TO:執行巨集

HOW TO:錄製巨集

HOW TO:管理巨集

HOW TO:在巨集中參考 COM 和 .NET Framework 元件

概念

使用巨集自動執行重複的動作

偵錯巨集

巨集錄製和執行的問題

巨集安全性和共通問題