
A mellékelt makró használata előtt be kell azt töltenie a keretrendszer makrói közé. Ennek módjáról a cikk „Kezdeti lépések” című szakaszában olvashat.
A makró segítségével tehát egy állományt választhatunk ki egy FileDialog típusú dialógusablakban, majd a kiválasztott fájlt a projekt részévé tesszük.
Kezdeti lépések
A keretrendszer Macro Explorer ablakában találunk egy Macros csomópontot, mely alapértelmezésben már tartalmaz betöltött makró projekteket. Ezekhez fűzzük a saját projektünket, melyet a mellékelt példa Macro mappájában helyeztünk el.
A Macros csomópont gyorsmenüjében válasszuk a „Load Macro Project” feliratú menüpontot, majd a felbukkanó keresőablakban keressük meg a saját makró-projektünket.
Miután a projektet megtaláltuk és betöltöttük, megjelenik egy AnyToProjectMacro csomópont, melynek Module1 nevű modulja tartalmazza az aláírást generáló AddToProject metódust.
Makró elkészítése
A makró metódusának meghívásakor meg kell jelenítenünk egy dialógusablakot, mely a Windows-os alkalmazások OpenFileDialog komponense által megjelenített dialógusablakkal azonos objektum. Ennek megjelenítéséhez a Windows-os alkalmazásban a ShowDialog metódust használjuk, melynek nem adunk meg paramétert, hiszen az ablak tulajdonosa a Windows-os Form objektum.
Makrók esetében – mert ezek nem rendelkeznek főablak-osztállyal – nem tudunk megadni szülőobjektumot. Létre kell tehát hozni egy osztályt, mely az IWin32Window osztályból származik, és ebben megadni, hogy a Visual Studio.NET keretrendszer főablaka lesz a fájl-dialógusablak tulajdonosa. Az osztály deklarációja a következő:
Public Class Win32 Implements System.Windows.Forms.IWin32Window
Overridable ReadOnly Property Handle() As System.IntPtr Implements System.Windows.Forms.IWin32Window.Handle
Get
Dim iptr As New System.IntPtr(DTE.MainWindow.HWnd)
Return iptr
End Get
End Property
End Class
Az osztályban az interfész Handle property-jét kell felüldefiniálni.
A következő lépés, hogy létrehozzuk a dialógusablak példányt, valamint egy objektumot a dialógusablak bezárásakor kapott eredmény tárolására.
Dim filedialog As Forms.FileDialog
filedialog = New Forms.OpenFileDialog()
...
Dim result As Forms.DialogResult
Majd példányosítjuk a fent létrehozott osztályt.
Egy változóban lekérdezzük a rendszermeghajtó betűjelét, hogy ezt megadhassuk a fájl-dialógusablak kezdőkönyvtárának.
initdirectory = System.Environment.SystemDirectory()
initdirectory = Left(initdirectory, InStr(initdirectory, "\", CompareMethod.Text))
filedialog.InitialDirectory = initdirectory
Utolsó lépésként megnyitjuk a dialógusablakot, majd amennyiben választottunk ki állományt, a kapott fájl nevét és elérési útvonalát átadjuk a DTE.ItemOperations.AddExistingItem metódusának.
If filedialog.ShowDialog(ptr) = result.OK Then
filename = filedialog.FileName
DTE.ItemOperations.AddExistingItem(filename)
...
A makró ezennel kész, egy kattintással kiválaszthatjuk, és a projekthez adhatjuk a kívánt állományt.