Delphi - Állomány- és könyvtár-információk

forráskód letöltése
Ebben a példában az állományok és a könyvtárak tulajdonságaival foglalkozunk. Megnézzük, hogy miként olvashatunk ki egy hozzárendelt ikont különböző méretekben, miként azonosíthatunk egy könyvtárat relatív elérési út megadásával, miként olvashatjuk ki egy állomány vagy könyvtár attribútumait, miként kérdezhetjük le egy indítható állomány típusát, miként tudhatjuk meg a tulajdonságait egy fájltípusnak, stb.
A ShellApi unitban található egy függvény, amely segítségével a bevezetőben felsorolt információkat megszerezhetjük. Ez a függvény az SHGetFileInfo.
SHGetFileInfo
function SHGetFileInfo(
pszPath: PAnsiChar;
dwFileAttributes: DWORD;
var psfi: TSHFileInfo;
cbFileInfo,
uFlags: UINT
): DWORD;
Egy állományról vagy könyvtárról szolgáltat információkat.
Paraméterek
pszPath: PAnsiChar
Az állomány vagy könyvtár elérési útja és neve. Az elérési út megadásánál megadhatunk relatív elérési utat is (Pl.: ’..’, ’\’, stb.).
Ha a uFlags paraméter a SHGFI_USEFILEATTRIBUTES flag-et is tartalmazza, akkor a megadott állománynak nem kell fizikailag léteznie. A függvény úgy fog működni, mintha a megadott állomány létezne, a megadott névvel és attribútumokkal. Ezt akkor használhatjuk ki, ha egy állománytípusról szeretnénk információkat lekérdezni.
dwFileAttributes: DWORD
Ennek a paraméternek csak akkor van jelentősége, ha a uFlags paraméter a SHGFI_USEFILEATTRIBUTES flag-et is tartalmazza. Ilyenkor ez a paraméter az állomány attribútumok megadására szolgál. Az attribútum megadásánál a Windows unit FILE_ATTRIBUTE_* konstansait használhatjuk.
Egyéb esetekben, ebben a paraméterben 0-t kell megadnunk.
var psfi: TSHFileInfo
Ebben a paraméterben egy TSHFileInfo típusú struktúrát kell megadnunk. A lekérdezés eredménye ennek a változónak a megfelelő tagjába kerül, attól függően, hogy az uFlags paraméterben milyen információt kértünk.
cbFileInfo
A psfi paraméterben megadott TSHFileInfo típusú struktúra mérete bájtokban.
uFlags: UINT
Ennek a paraméternek az értéke határozza meg, hogy milyen információkat akarunk lekérdezni.
Értéke az alábbi konstansok kombinációja lehet:
Konstans Jelentése
SHGFI_ATTRIBUTES Attribútum-információk kérése. A lekérdezés eredményét a TSHFileInfo struktúra dwAttributes tagjából olvashatjuk ki.
SHGFI_DISPLAYNAME Az állomány vagy könyvtár neve, ahogyan azt a rendszer megjeleníti. Ha az rendelkezik hosszú névvel, akkor azt kapjuk eredményül. A lekérdezés eredményét a TSHFileInfo struktúra szDisplayName tagjából olvashatjuk ki.
SHGFI_EXETYPE Ezt a flag-et csak önmagában használhatjuk. Segítségével egy futtatható állomány típusát határozhatjuk meg. A lekérdezés eredményét a függvény visszatérési értékeként kapjuk meg.
SHGFI_ICON A hozzárendelt ikon lekérdezésére szolgál. Az ikont a TSHFileInfo struktúra hIcon tagjában kapjuk meg. Az ikon indexét a rendszer ImageList-jében az iIcon tag adja meg.
SHGFI_ICONLOCATION A hozzárendelt ikont tartalmazó állomány nevét, valamint azon belül az ikon indexét adja meg. Az állomány neve a TSHFileInfo struktúra szDisplayName tagjába kerül, az ikon indexe pedig az iIcon tagba.
SHGFI_LARGEICON Az SHGFI_ICON-nal együtt használható, az állomány nagy ikonjának lekérdezésére szolgál.
SHGFI_SELECTED Csak az SHGFI_ICON flag-gel együtt használható. A lekérdezett ikont kijelölt állapotában jeleníti meg.
SHGFI_SHELLICONSIZE Csak az SHGFI_ICON flag-gel együtt használható. Az ikont a rendszerben beállított méretben jeleníti meg.
SHGFI_SMALLICON Az SHGFI_ICON-nal, vagy az SHGFI_SYSICONINDEX-szel együtt használható, az állomány kis ikonjának lekérdezésére szolgál.
SHGFI_SYSICONINDEX A hozzárendelt ikon indexét adja vissza a rendszer ImageList-jéből. A lekérdezés eredményét a TSHFileInfo struktúra iIcon tagjából olvashatjuk ki.
SHGFI_TYPENAME A hozzárendelt, szöveges típusleírást adja vissza. A lekérdezés eredményét a TSHFileInfo struktúra szTypeName tagjából olvashatjuk ki.
SHGFI_USEFILEATTRIBUTES Használatával egy állománytípusról kérdezhetünk le információkat. Olyan állományról kapunk információt, amely fizikailag nem feltétlenül létezik, és a dwFileAttributes paraméterben megadott attribútumokkal rendelkezik. Nem használható együtt az SHGFI_ATTRIBUTES, SHGFI_EXETYPE, valamint az SHGFI_PIDL flag-ekkel.
Visszatérési érték
A függvény visszatérési értéke a uFlags paramétertől függ.
Ha a uFlags paraméter nem tartalmazza sem az SHGFI_EXETYPE, sem az SHGFI_SYSICONINDEX értéket, akkor a függvény sikeres lefutása esetén az eredmény nem 0.
Ha a uFlags-ben szerepel az SHGFI_EXETYPE, akkor a függvény visszatérési értéke a futtatható állomány típusát azonosító szám.
A TSHFileInfo struktúra tagjai
  • hIcon: HICON – az állományhoz rendelt ikon azonosítója. Az ikon számára lefoglalt memóriaterület felszabadításáról nekünk kell gondoskodnunk. Ezt megtehetjük a DestroyIcon függvény segítségével.
  • iIcon: Integer – az ikon indexe a rendszer ImageList-jében.
  • dwAttributes: DWORD – Fájl attribútumok. Az attribútum az ShlObj unit SFGAO_* konstansainak kombinációja lehet.
  • szDisplayName: array [0..MAX_PATH-1] of AnsiChar – Az állomány, könyvtár neve, ahogyan azt a Windows Shell megjeleníti.
  • szTypeName: array [0..79] of AnsiChar – Az állományhoz tartozó szöveges leírás.