
A mellékelt példaprogram használatához a ModulInfo.dpk Package állomány tartalmát telepítenie kell.
Delphi5 feletti verziók használata esetében a Package fordítása hibát fog okozni, hiányzó unit-ok miatt. A fordításhoz szükséges unit-ok megtalálhatóak a delphiX\Source\ToolsAPI könyvtárban.
Ugyanazokat a kezdeti lépéseket kell végrehajtanunk, mint az előző részben. Létre kell hoznunk egy DataModule-t, valamint egy Form-ot.
Ügyelnünk kell arra, hogy sem a unit-ok nevei, sem az objektumok nevei nem lehetnek ugyanazok, mint amiket az előző programban készítettünk. Más elnevezést kell beállítanunk a Package Options ablakában. A TWizard osztály implementálása során létrehozott GetIDString és GetName függvényeknek is más értékeket kell visszaadniuk, mint az előző programnak.
Fontos, hogy mindenhez más elnevezést használjunk, mert különben a Delphi nem fogja engedni feltelepíteni az újabb programunkat, hiszen ugyanazon név alatt nem hozhatunk létre egy helyen, két objektumot.
Egy másik probléma is felmerül. Az előző részben létrehoztunk egy új menüpontot. Nem lenne szerencsés ugyanazzal a névvel még egyet elkészíteni.
Meg kell tehát vizsgálnunk, hogy az előző alkalommal létrehozott menüpont létezik-e. Ha nem, akkor létrehozzuk, ha igen, akkor csak egy újabb almenüpontot helyezünk el benne.
if m.Items[m.Count-2].Caption<>'Animare' then begin
PopupMenu1.Items.Caption:='Animare';
m.Insert(m.Count-1, PopupMenu1.Items);
end
else begin
m:=m.Items[m.Count-2];
n:=TMenuItem.Create(Nil);
n.Caption:='Project/Modul info';
n.OnClick:=Tools2Click;
m.Add(n);
end;
Az információkat a ToolServices objektum segítségével fogjuk elérni. Használatához a uses listában fel kell sorolnunk a következő unitok neveit: ToolsAPI, ExptIntf, ToolIntf.
A ToolServices egy olyan objektum, amely már deklarálva van, nem kell belőle új példányt létrehoznunk.
Számos függvénnyel rendelkezik. Ezeknek most két csoportját vizsgáljuk meg. Az egyik csoport segítségével az aktuálisan megnyitott project állományairól kaphatunk információkat. A másik csoport a Delphi moduljairól készít listát. A telepített komponenseket is modulok tartalmazzák, ezeket is kilistázhatjuk.
Project állományok

GetCurrentFile
function GetCurrentFile: string;
Az aktuálisan megnyitott állomány elérési útját és nevét adja vissza.

GetFormCount
function GetFormCount: Integer;
A project-ben szereplő Form-ok számát adja vissza.

GetFormName
function GetFormName(
Index: Integer
): string;
A megadott indexű Form-hoz tartozó állomány elérési útját és nevét adja vissza.
Paraméterek
Index: Integer
A Form indexe.
Visszatérési érték
A Form-ot tartalmazó állomány elérési útja és neve.

GetNewModuleName
function GetNewModuleName(
var UnitIdent,
FileName: string
): Boolean;
Automatikusan generál egy soron következő unit- és állománynevet. Ugyanazt a mechanizmust használja, mint az IDE.
Paraméterek
var UnitIdent
Az itt megadott változóba kapjuk meg a unit soron következő, lehetséges nevét.
FileName: string
Az itt megadott változóba kapjuk meg a unit soron következő, lehetséges állománynevét.

GetProjectName
function GetProjectName: string;
Az aktuálisan megnyitott project dpr állományának elérési útját és nevét adja eredményül.

GetUnitCount
function GetUnitCount: Integer;
A project-hez tartozó unit-ok számát adja vissza. Az eredménybe a dpr, pas, res, dof, pas, stb. állományokat is beleszámolja. Ha csak a dpr és pas állományokat akarjuk kilistázni, akkor erre figyelnünk kell.

GetUnitName
function GetUnitName(
Index: Integer
): string;
A project egy unitjának elérési útját és állománynevét adja vissza.
Paraméterek
Index: Integer
A unit indexe. Az indexelés a szokásos módon, 0-val kezdődik.
Visszatérési érték
A megadott indexű unit elérési útja és állományneve.

IsFileOpen
function IsFileOpen(
const FileName: string
): Boolean;
Segítségével leellenőrizhetjük, hogy egy megadott állomány meg van-e nyitva.
Paraméterek
const FileName: string
A vizsgálandó állomány elérési útja és neve.
Visszatérési érték
Igaz, ha az állomány meg van nyitva, ellenkező esetben hamis.