
A mellékelt példaprogram megnyitása előtt az EnumTaskBarWindows.pas-ban lévő komponenst telepítenie kell a Delphi alá. Ehhez válassza a Component - Install Component menüpontot.
Mivel egy nem vizuális komponensről van szó, ezért az új komponenst a TComponent osztályból származtatjuk. A komponens a következőképpen fog működni. Amikor meghívjuk az Execute metódust, akkor megvizsgálja az összes futó alkalmazás ablakát, és ha olyat talál, amely a TaskBar-on is megjelenik (ehhez több feltételnek kell teljesülnie), akkor generál egy eseményt, amelyben megkapjuk az aktuálisan vizsgált ablak leíróját. A leíró ismeretében gyakorlatilag bármit megtehetünk az ablakkal: lekérdezhetjük, megváltoztathatjuk a tulajdonságait, vagy akár be is zárhatjuk.
Az eseményben tehát megkapjuk az ablak leíróját, de ehhez először is létre kell hozni egy új típust, ami az eseménykezelő eljárás típusát határozza meg:
type
TEnumWindowsEvent=procedure(Sender: TObject; AHandle: HWND) of object;
Az OnFindWindow eseményen kívül a komponensnek más property-je nem is lesz.
Az Execute eljárás nagyon egyszerű, mindössze egy Windows API függvényhívást tartalmaz, ez pedig nem más, mint az EnumWindows függvény.

EnumWindows
function EnumWindows(
lpEnumFunc: TFNWndEnumProc;
lParam: LPARAM
): BOOL; stdcall;
Ezzel a függvénnyel a létező ablakokat kérdezhetjük le, egy speciális callback függvény segítségével.
Paraméterek
lpEnumFunc: TFNWndEnumProc
Ebben a paraméterben kell megadni azt a callback függvényt, ami minden egyes ablak lekérdezésekor lefut. A függvénynek kötött formája van, ami a következőképpen néz ki:
function EnumWindowsProc(Window: HWND; lParam: LPARAM): boolean; stdcall;
Természetesen a függvény és a paraméterek neve tetszőleges lehet.
lParam: LPARAM
Ebben a paraméterben egy tetszőleges adatot megadhatunk. Az ebben a paraméterben megadott adatot a callback függvényben kapjuk meg az lParam paraméterében.
Visszatérési érték
A függvény visszatérési értéke igaz, ha a művelet sikerült, és hamis, ha nem.
Az Execute eljárásban tehát csak a következő függvényhívás történik:
EnumWindows(@EnumWindowsProc, integer(self));
Az lParam paraméterben magát a hívó komponens objektumát adjuk meg, amire szükség lesz a callback függvényben.
A callback függvényben megkapjuk az aktuálisan vizsgált ablak leíróját a Window paraméterben. Amikor ezt megkapjuk, ellenőriznünk kell, hogy az ablak látszik-e a TaskBar-on. Ez akkor van így, ha az alábbi feltételek teljesülnek:
- az ablak látható, vagy ikon (minimized) állapotban van;
- az ablaknak nincs szülő ablaka, vagy a szülő ablak maga a Desktop;
- az ablak nem ToolWindow;
Azt, hogy az ablak látható-e, az IsWindowVisible függvénnyel tudjuk lekérdezni. Paraméterként az ablak leíróját kell megadni (amit a Window paraméterben megkaptunk). A függvény visszatérési értéke igaz, ha az ablak látható, és hamis, ha nem.
Ha az ablak minimized állapotban van, akkor az IsIconic függvény visszatérési értéke igaz, ellenkező esetben hamis. Paraméterként itt is az ablak leíróját kell megadni.
Az ablak szülő ablakának leíróját a GetWindowLong függvénnyel tudjuk lekérdezni, amelynek paraméterként meg kell adni az ablak leíróját, valamint a GWL_HWNDPARENT konstanst. Ha a visszatérési érték 0, vagy megegyezik a Desktop ablak leírójával (amit a GetDesktopWindow-wal kérdezhetünk le), akkor ez a feltétel is teljesült.
Végül ha az ablak tulajdonságai között szerepel a WS_EX_TOOLWINDOW tulajdonság, akkor nem jelenik meg a TaskBar-on.
Ha minden feltétel teljesült, akkor meghívjuk a komponens DoFindWindow eljárását, ami generál egy OnFindWindow eseményt. A komponens objektumát az lParam paraméterben kaptuk meg.