Akkor nézzük sorjában, hogy milyen lépéseket kell végrehajtanunk a megfelelő ActiveX DLL létrehozásához.
Először is zárjunk be mindent, majd válasszuk a File menü New menüpontját. A megjelenő New Items nevű ablakban válasszuk az ActiveX lapot, azon belül pedig az ActiveX Library ikont, majd kattintsunk az OK gombra. A Project1 helyett fájlnévnek adjuk azt a nevet, ami majd a DLL neve kell hogy legyen. Ha elmentettük a project-et, akkor megint válasszuk a File menü New menüpontját, és szintén az ActiveX lapról hozzunk létre egy új COM Object objektumot.
A COM Object Wizard ablakban adjuk meg az új osztály nevét, a „T” betű nélkül. Az options részben az Include Type Library kapcsolót kapcsoljuk ki, így az Implemented Interfaces mező engedélyezett lesz. Ebben a mezőben adjuk meg a következő interfészeket: IDeskBand, IPersistStreamInit, IObjectWithSite.
A Description mezőben megadhatunk egy rövid leírást az új objektumról. Ha mindent beállítottunk, akkor kattintsunk az OK gombon.
Kapunk egy üres osztálydeklarációt, ami a következőképpen néz ki (természetesen az osztály neve nem feltétlenül ugyanaz):
TSoftwareOnlineTBObject = class(TComObject, IDeskBand, IPersistStreamInit, IObjectWithSite)
protected
{Declare IDeskBand methods here}
{Declare IPersistStreamInit methods here}
{Declare IObjectWithSite methods here}
end;
Ebben deklarálnunk kell az implementált interfészek függvényeit, még akkor is, ha ténylegesen nem használjuk fel őket.
Szükség lesz a mellékelt SHDocVw_TLB.pas, az ShlObj, és a Registry unit-okra is, valamint létrehozunk egy új osztályt a TComObjectFactory osztályból származtatva. Ebben felülírjuk az UpdateRegistry eljárást, ebben az eljárásban fogjuk bejegyezni az Internet Explorer eszköztárunkat a Registry-be. Ehhez először is szükségünk lesz egy GUID-ra, amit a Delphiben a Ctrl+Shift+G billentyűkombinációval szúrhatunk be. Mivel többször is fogjuk használni, érdemes ezt egy konstansban elhelyezni:
const
DESKBAND = '{081C0116-38F1-4820-AE99-174D211E6B55}';
Első lépésként a „HKEY_CLASSES_ROOT\CLSID\<GUID>” kulcs alá beírjuk a kiterjesztés nevét, például „Animare Software Explorer Extension”. A <GUID> helyére a COM objketum GUID-jét kell beilleszteni. Ezt a GUID-t automatikusan megkapjuk, amikor a COM objektumot létrehozzuk, az osztálydeklaráció után találjuk meg konstansként deklarálva.
Class_SoftwareOnlineTBObject: TGUID = '{1D2E4B08-E0A3-4565-B278-3B6F798FC436}';
A második lépés a „HKEY_CLASSES_ROOT\CLSID\<GUID>\InProcServer32” kulcs alá a ThreadingModel = Apartment értékének elhelyezése.
A harmadik lépés a „HKEY_CLASSES_ROOT\CLSID\<GUID>\Implemented Categories\<DESKBAND>” kulcs létrehozása, ahol a <DESKBAND> helyére a DESKBAND konstans értékét kell beilleszteni (lásd fent).
A negyedik lépésben a „HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Internet Explorer\Toolbar” kulcs alá beírjuk a COM objektumunk GUID-jét.
Az eszköztár egy egyszerű Delphi Form-ból elkészíthető, tehát hozzunk létre egy új Form-ot. A Form Visible property-jét állítsuk igazra, a BorderStyle property-jét pedig bsNone-ra. Ezután ugyanúgy írjuk meg a Form-hoz tartozó kódot, mintha csak egy egyszerű alkalmazást készítenénk.
Most nézzük meg, hogy mely függvényeket kell implementálnunk. A CloseDW függvényben be kell zárnunk az eszköztárat, ami azt jelenti, hogy az eszköztár Form-ot felszabadítjuk. Ezt a FreeAndNil eljárással célszerű megtenni (SysUtils unit), mert így a Form változója egyből nil értéket is kap.
A GetWindow függvényben a Form leíróját kell visszaadnunk a wnd paraméterben. Mivel a Form-ot több helyen is használjuk, ezért célszerű egy olyan eljárást készíteni, ami ellenőrzi, hogy a Form létre van-e hozva, és ha nem, akkor létrehozza azt. E példában ez a CreateTBForm eljárás.
Nagyon fontos eljárás a GetBandInfo, ebben az eszköztár adatait kell megadnunk a paraméterként kapott TDeskBandInfo struktúrában.
Ha az eszköztárunk olyan funkciókat is megvalósít, ami például megadja a böngészőben látható oldal címét, akkor szükségünk lesz egy IWenRowser2 típusú interfészre is. Ezt az interfészt a SetSite függvényben kaphatjuk meg. Ugyanebben az eljárásban kaphatjuk meg a böngésző ablak leíróját, amire az eszköztár Form létrehozásakor van szükség (FParentWnd).
Ha elkészültünk, akkor a Run menü RegisterActiveX Server menüpontjával regisztrálhatjuk az ActiveX DLL-ünket. Ha mindent jól csináltunk, akkor az Internet Explorer-t elindítva a mi eszköztárunk is kiválasztható az eszköztárak listájából. Ehhez kattintsunk jobb gombbal az eszköztáron, és válasszuk ki a sajátunkat.