Практическое руководство. Использование надстроек для управления макросами
Объект Macros модели автоматизации Visual Studio позволяет программными средствами управлять макросами, записываемыми в интегрированной среде разработки (IDE). Его использование позволяет:
Приостанавливать или возобновлять запись макроса.
Добавлять одну или более строк кода в записываемый макрос.
Определять, выполняется ли в данный момент запись макроса.
Кроме того, с помощью метода ExecuteCommand можно напрямую выдавать команды интегрированной среде разработки, например на создание нового файла.
Примечание
Члены объекта Macros не предназначены для использования внутри макроса; их следует использовать только внутри надстройки.
В следующем примере Visual Basic показано, как использовать различные члены модели автоматизации макросов и ссылаться на них.
Примечание
Отображаемые диалоговые окна и команды меню могут отличаться от описанных в справке в зависимости от текущих настроек или выпуска.Эти процедуры были разработаны с обычными параметрами разработки.Чтобы изменить настройки, в меню Сервис выберите команду Импорт и экспортпараметров.Дополнительные сведения см. в разделе Работа с параметрами.
Пример
В следующем примере проверяется, записывается ли в данных момент макрос. Если макрос записывается, к нему добавляется дополнительная строка кода.
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
См. также
Задачи
Практическое руководство. Изменение параметров окон
Практическое руководство. Создание надстройки
Пошаговое руководство. Создание мастера
Основные понятия
Автоматизация повторяющихся действий с помощью макросов
Диаграмма модели объектов автоматизации