如何:使用外接程序控制宏
更新:2007 年 11 月
Visual Studio 自动化模型中的 Macros 对象为您提供了一种以编程方式对集成开发环境 (IDE) 中记录的宏进行控制的措施。通过使用这种措施,您可以:
暂停或继续宏记录器。
将一个或多个代码行添加到正被记录的宏中。
确定宏记录器当前是否正在记录宏。
还可以使用 ExecuteCommand 方法直接对 IDE 发出命令,例如创建新文件。
说明: |
---|
Macros 对象成员不是为在宏中使用而设计的,只能在外接程序中使用这些对象成员。 |
下面的 Visual Basic 示例演示如何引用和使用宏自动化模型的各种成员。
说明: |
---|
显示的对话框和菜单命令可能会与“帮助”中的描述不同,具体取决于您现用的设置或版本。这些过程是使用现用的常规开发设置开发的。若要更改设置,请在“工具”菜单上选择“导入和导出设置”。有关更多信息,请参见 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