Delphi - Betöltött erőforrások kilistázása

forráskód letöltése
Ebben a példában arra keresünk megoldást, hogy miként tudhatjuk meg azt, hogy alkalmazásunk milyen betöltött erőforrásokkal rendelkezik.
A Windows unit-ban található, EnumResourceTypes függvény segítségével listát készíthetünk az alkalmazásunkban szereplő erőforrástípusokról.
EnumResourceTypesA
function EnumResourceTypesA(
hModule: HMODULE;
lpEnumFunc: ENUMRESTYPEPROC;
lParam: Longint
): BOOL;
Listát készít egy megadott modulban szereplő erőforrások típusairól.
Paraméterek
hModule: HMODULE
Annak a modulnak az azonosítója, amelynek erőforrástípusait le akarjuk kérdezni.
lpEnumFunc: ENUMRESTYPEPROC
Ebben a paraméterben egy callback függvényt kell megadnunk. Ez a függvény minden egyes megtalált erőforrástípus esetén meghívásra kerül. A callback függvénynek mindig igaz értékkel kell visszatérnie, egyébként a keresés megszakad.
lParam: Longint
Saját paraméter megadását teszi lehetővé. Az itt megadott érték továbbadásra kerül, az lpEnumFunc paraméterben megadott callback függvénynek.
Visszatérési érték
Igaz, ha a függvény lefutása sikeres volt, ellenkező esetben hamis.
Az EnumResTypeProc callback függvény
A callback függvénynek az alábbi szintaktikával kell rendelkeznie.
function EnumResTypeProc(hModule: HMODULE; lpszType: LPTSTR; lParam: TStrings): BOOL; stdcall;
Az lParam típusát megváltoztathatjuk attól függően, hogy milyen típusú adatra van szükségünk. Jelen esetben TStrings típusra van szükség, amelyen keresztül a ListBox Items property-jét érhetjük el.
Az erőforrástípust az lpszType paraméterből határozhatjuk meg, a rendelkezésre álló konstansok segítségével.
Ezek a konstansok a következők:
Konstans Jelentése
RT_ACCELERATOR Gyorsító tábla
RT_ANICURSOR Animált kurzor
RT_ANIICON Animált ikon
RT_BITMAP Bitmap
RT_CURSOR Kurzor
RT_DIALOG Dialógus ablak
RT_FONT Betűtípus
RT_FONTDIR Betűtípus könyvtár
RT_GROUP_CURSOR Kurzor
RT_GROUP_ICON Ikon
RT_ICON Ikon
RT_MENU Menü
RT_MESSAGETABLE Üzenettábla
RT_RCDATA Adat
RT_STRING Sztring
RT_VERSION Verzió
Egy megadott erőforrástípushoz tartozó erőforrásainkat az EnumResourceNames függvény segítségével listázhatjuk ki.
EnumResourceNames
function EnumResourceNames(
hModule: HMODULE;
lpType: PChar;
lpEnumFunc: ENUMRESNAMEPROC;
lParam: Longint
): BOOL;
Kilistázza egy modul megadott típusú erőforrásait.
Paraméterek
hModule: HMODULE
Annak a modulnak az azonosítója, amelyben a listázást végre akarjuk hajtani.
lpType: PChar
Az erőforrás típusa.
lpEnumFunc: ENUMRESNAMEPROC
Ebben a paraméterben egy callback függvényt kell megadnunk. A függvény minden egyes megtalált erőforrásnév esetén meghívásra kerül. Igaz értékkel kell visszatérnie, egyébként a keresés befejeződik.
function EnumResNamesProc(hModule: HMODULE; lpszType, lpszName: PChar; lParam: TStrings): BOOL;
A paraméterek jelentése sorrendben: modul azonosítója, erőforrás típus, erőforrás neve, az EnumResourceNames függvénytől kapott paraméter. Az utolsó paraméter típusát az határozza meg, hogy milyen adatra van szükségünk.
lParam: Longint
A callback függvénynek átadandó paraméter.
Visszatérési érték
Igaz, ha a függvény lefutása sikeres volt, ellenkező esetben hamis.