Hallo,
Windows verknüpft Dateien mit verschiedenen Programmen. Die Dateierweiterungen erhalten dann hübsche kleine Icons. Wie kann man diese Icons auslesen und im eigenen Programm darstellen?
Gruß dat Tala
Die Icons für die Dateierweiterungen werden in der Registery gespeichert.
Eine Option wäre also, in der regedit einen entsprechenden Schlüssel zu setzen.
Siehe auch:
Schaut mal im IRC vorbei:
Server: https://libera.chat/ ##chsarp
Hallo,
falsch rum. Ich möchte keine Dateierweiterung registrieren. Sondern lediglich das Icon einer registrierten Dateierweiterung auslesen. Beispielsweise bei .PDF dieses typsiche PDF Symbol was man im Explorer sehen kann. Dieses Symbol möchte ich dann auch in meinen Programm für entsprechende Dateierweiterungen in einer Dateiliste verwenden.
Gruß dat Tala
*push* Hat jemand zumindest Schlagworte für mich, wonach ich suchen kann?
Gruß dat Tala
Hallo!
Ein entsprechendes Stichwort wurde schon gegeben: Registry.
Dort werden alle Dateiendungen und die dazugehörigen Symbole vermerkt, und zwar im Unterordner HKEY_CLASSES_ROOT (und dort als Standard-Wert im Unterordner DefaultIcon des jeweiligen Dateityp-Ordners). Allerdings befinden sich die meisten Symbole als Resource in einer Exe-Datei, welche der jeweiligen Dateiendung zugeordnet ist.
Ich meine auch, dass hier im Forum mal ein Programm zur Bildextraktion gepostet wurde.
Nobody is perfect. I'm sad, i'm not nobody 🙁
Jap, mach es so wie oben beschrieben und extrahier dir dann die Resource über ein entsprechendes Tool:
http://www.pe-explorer.com/de/peexplorer-feature-list.htm
Eine Suche bei google über "Resourcen extrahieren" bringt dir noch zahlreiche weitere Tools.
Habe gerade eine einfachere Lösung gefunden, die komplett ohne Registry funktioniert und das ist genau das was ich wollte.
private BitmapFrame getIconFromString(string Path)
{
Icon ico = Icon.ExtractAssociatedIcon(this.FileLocation);
MemoryStream strm = new MemoryStream();
ico.Save(strm);
IconBitmapDecoder ibd = new IconBitmapDecoder(strm, BitmapCreateOptions.None, BitmapCacheOption.Default);
return (BitmapFrame)ibd.Frames[0];
}
Gruß dat Tala