Utilizzando il modello di automazione
Dopo aver effettuato il package VS all'automazione, è possibile ottenere le proprietà e i metodi chiamando il metodo di GetObject su _DTE oggetto, passando una stringa che rappresenta l'oggetto che si desidera recuperare.
Ottenere gli oggetti di project
Di seguito sono riportati due esempi di codice che mostrano come un utente di automazione ottiene gli oggetti di automazione iniziali del progetto. Nel primo esempio viene utilizzata una macro di Visual Studio ; il secondo codice C++ di utilizzo.
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.
}
In questa fase, l'utente può utilizzare gli oggetti del progetto standard che fa parte di un package VS specifico per spostare il modello della gerarchia. Se si estende il codice di Visual Basic nell'esempio precedente, è possibile vedere quali l'utente può ottenere l'oggetto ActiveX contenente uno dei metodi e le proprietà specializzati.
Nell'esempio di codice viene visualizzata una macro di Visual Studio per un modello di progetto:
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
Nell'esempio di codice vengono visualizzati macro di Visual Studio per le pagine di opzioni scegliere dal menu di strumenti . Codice sono elencati di questa codifica i nomi di tutte le proprietà nell'opzione di Generale dell'ambiente di Visual Studio scegliere dal menu di strumenti :
dim objDTE
dim objEnv
set objDTE = CreateObject("VisualStudio.DTE")
set objEnv = objDTE.Properties("Environment", "General")
for each obj in ObjEnv
MsgBox obj.Name
Next