HOW TO:使用增益集控制巨集
更新:2007 年 11 月
Visual Studio Automation 模型中的 Macros 物件,可以讓您對於在整合式開發環境 (IDE) 中錄製的巨集具有相當的程式控制能力。使用此物件,您可以:
暫停或繼續巨集錄製器。
在錄製的巨集中加入一或多行程式碼。
決定巨集錄製器目前是否正在錄製巨集。
您也可以使用 ExecuteCommand 方法,直接向 IDE 發出命令,例如建立新檔案。
注意事項: |
---|
Macros 物件的成員並不是設計為要在巨集中使用,只能在增益集 (Add-In) 中使用。 |
在下列 Visual Basic 範例中,會示範如何參考及使用巨集 Automation 模型的各個成員。
注意事項: |
---|
根據目前使用的設定與版本,您所看到的對話方塊與功能表命令可能會與 [說明] 中所描述的不同。使用 [一般開發設定] 開發了這些程序。若要變更設定,請從 [工具] 功能表中選擇 [匯入和匯出設定]。如需詳細資訊,請參閱 Visual Studio 設定。 |
範例
在下列範例中,會檢查巨集目前是否正在錄製中。如果正在錄製中,會再加入另一行程式碼。
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