A shell32.dll (System32) 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. A függvényt az alábbi deklarációval érhetjük el.

SHGetFileInfo
public static extern IntPtr SHGetFileInfo(
string pszPath,
uint dwFileAttributes,
ref SHFILEINFO psfi,
uint cbSizeFileInfo,
uint uFlags
);
Egy állományról vagy könyvtárról szolgáltat információkat.
Paraméterek
string pszPath
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.
uint dwFileAttributes
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.
ref SHFILEINFO psfi
Ebben a paraméterben egy SHFILEINFO 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.
uint cbSizeFileInfo
A psfi paraméterben megadott SHFILEINFO típusú struktúra mérete bájtokban.
uint uFlags
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 az SHFILEINFO 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 SHFILEINFO 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 SHFILEINFO 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 SHFILEINFO 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 SHFILEINFO 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 SHFILEINFO 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.
Az SHFILEINFO struktúrát és a konstansokat is implementálnunk kell. A struktúra implementációja megtalálható a mellékelt forráskódban.