Dateityp eines Dateiordners ermitteln



  • Hallo @all,

    ich schreibe zur Zeit an einem Explorer, welcher u.A. den Namen für Datentypen ausspucken soll, also z.B. für foo.png sowas wie PNG-Bild oder für ne .doc - Datei sowas wie MS Word Dokument...

    Dies klappt mit folgender Funktion auch sowas ganz gut:

    std::string Dateityp( const std::string& dateiname )
    {
    	SHFILEINFO shfi;
    	SHGetFileInfo( dateiname.c_str() , 0 , &shfi , sizeof( shfi ) , SHGFI_TYPENAME | SHGFI_USEFILEATTRIBUTES );
    
    	return shfi.szTypeName;
    }
    

    Für alle getesteten Datentypen hat es bisher funktioniert. Jedoch habe ich mit Dateiordnern ein Problem: Der Windows-Datei-Explorer zeigt bei meinem Rechner ( Win7 ) bei einem Ordner "Dateiordner" an, aber z.B. auch "Systemordner" für den Systemordner eben^^

    Jetzt wollte ich wissen, ob es dafür eine winAPI Funktion gibt, welche das obige Problem löst.
    Vorher testen ob es eine Datei oder ein Ordner ist sollte kein Problem sein, die Funktion muss mir nur den Ordnertypnamen zurückliefern.

    mfG
    Hlymur



  • Du musst auch das Dateiattribut bei Ordnern übergeben:

    SHGetFileInfo( dateiname.c_str() , FILE_ATTRIBUTE_DIRECTORY , ....
    

Anmelden zum Antworten