C# Images aus Datei Ordner lesen?

lordfritte

Lieutenant
Registriert
Juli 2006
Beiträge
1.007
Hallo ich arbeite gerade an einem kleinen Dateiexplorer, jetzt würde ich da auch gerne die icons reinbringen die ja jeder Ordner und jede Datei hat.

Aber wie kann ich die mit C# lesen?

Ich habe es schon mit Bitmap.FromFile() versucht aber bei Ordner geht das garnicht und bei Dateien bekomme ich immer eine memoryOverflow exception.
 
Aber kann man man nicht auch irgendwie das Icon aus Ordner holen?
Weil bei einem Ordner bekomme ich bei ExtractAssociatedIcon() FileNotFoundException
 
Das Icon, was ein Ordern bei Windows Xp und Vista hat, steht in einer versteckten Datei namens Desktop.ini im jeweiligen Ordner. Zumindest der Pfad dahin.
 
ALso so sähe die aus:
Code:
[.ShellClassInfo]
LocalizedResourceName=@%SystemRoot%\system32\shell32.dll,-21779
InfoTip=@%SystemRoot%\system32\shell32.dll,-12688
IconResource=%SystemRoot%\system32\imageres.dll,-113
IconFile=%SystemRoot%\system32\shell32.dll
IconIndex=-236
[LocalizedFileNames]
Sample Pictures.lnk=@%SystemRoot%\system32\shell32.dll,-21805

Jetzt ist natürlich die Frage wie ich daran komme
 
Steht doch da:
IconResource=%SystemRoot%\system32\imageres.dll,-113
IconFile=%SystemRoot%\system32\shell32.dll
Das Icon liegt in der Iconsammlung von Windows, shell32.dll, Icon Nummer 113.
 
1.) Die meisten Grafiken von XP und Vista sind irgendwo in dlls hinterlegt (ich glaube es ist die shell32.dll). Ich habe die schon einmal extrahiert (einfach nach Icon Extractor oder so ähnlich suchen). Die kannst du dann als Icons vergeben.

2.) Mit Bitmap.FromFile() liest du den Inhalt einer Bitmap Datei aus. Wenn das kein Bitmap ist oder besonders groß, dann wird das nicht funktionieren. Außerdem bekommst du dann nur den Inhalt einer Foto-Datei, nicht aber deren Symbol

3.) Die desktop.ini zu verarbeiten wäre eine sehr schlampige Lösung. Die Datei ist nicht umsonst versteckt. Die ist nicht dazu gedacht, durchgelesen zu werden. Wer weiß, ob es die in späteren Windows Releases noch in der Form gibt und ob die dlls gleich heißen.

4.) Das mit dem Icon ermitteln ist ein guter Trick, wird aber bei einem Dateiexplorer ziemlich schnell zum totalen Performancecrash führen, wenn man bei jedem Öffnen eines Ordners mit 1K Dateien, was in einem Sekundenbruchteil passiert, 1K Dateien auf der Festplatte erzeugt und wieder löscht.
 
Zurück
Oben