Использование модели автоматизации
После подключения VSPackage к автоматизации можно получить свойства и методы, вызвав GetObject метод в _DTE объекте, передав строку, представляющую объект, который требуется получить.
Получение объектов проекта
Ниже приведены два примера кода, в которых показано, как потребитель автоматизации получает объекты автоматизации проекта. Сведения о том, как получить объект DTE, см. в статье "Практическое руководство. Получение ссылок на объекты DTE и DTE2".
Sub DoAutomation()
Dim MyProjects As Projects
MyProjects = DTE.GetObject("AcmeProject")
End Sub
void DoAutomation(void)
{
CComQIPtr<Projects> pMyPkg; // Use an IDispatch-derived object type.
pMyPkg = pDTE->GetObject("AcmeProjects");
// The '=' performs a Query Interface.
// Assumes pDTE is already available as a global.
// Use pMyPkg to access your projects object's properties and methods.
}
На этом этапе можно использовать стандартные объекты проекта, которые являются частью определенного VSPackage, чтобы переместить модель иерархии вниз.
В следующем примере кода показано, как получить пользовательский объект, который является свойством пользовательского типа проекта.:
Dim MyPrj As Project
Dim MyPrjItem As ProjectItem
Dim objMyObject as MyExtendedObject
MyPrj = MyProjects.Item(1) 'use the Projects collection to get a project
objMyObject = MyPrj.Object 'You call .Object to get to special Project
'implementation
objMyObject.MySpecialMethodOrProperty
В следующем коде перечислены имена всех свойств в разделе "Общие" среды Visual Studio в меню "Сервис".
dim objDTE
dim objEnv
set objDTE = CreateObject("VisualStudio.DTE")
set objEnv = objDTE.Properties("Environment", "General")
for each obj in ObjEnv
MsgBox obj.Name
Next