Seite 1 von 1

Datei-Icons darstellen

Verfasst: Sonntag 2. Februar 2020, 09:19
von WalterT
Liebe Freunde,

ich möchte ein kleines optisches Gadget in meine Hotfolder-Anwendung einbauen:

Wenn ich Ordner verarbeite, dann liste ich den Ordnerinhalt auf. Nun möchte ich vor jeden Dateinamen auch das zugehörige System-Icon voranstellen.

Hat jemand eine Idee, wie man zu einem Dateinamen (samt vollständigem Pfad) das jeweilige Icon rauskriegt? Eventuell über die win32api und den Datei-Handle?

Danke im voraus
Walter

Re: Datei-Icons darstellen

Verfasst: Dienstag 4. Februar 2020, 16:35
von DeaD_EyE
Ein Ansatz wäre das hier:

Code: Alles auswählen

from winreg import QueryValue, HKEY_CLASSES_ROOT, ExpandEnvironmentStrings


def get_icon(extension):
    key = QueryValue(HKEY_CLASSES_ROOT, extension) + '\\DefaultIcon'
    result, val = QueryValue(HKEY_CLASSES_ROOT, key).rsplit(',', maxsplit=1)
    return ExpandEnvironmentStrings(result)
 
 
print(get_icon('.odt'))

Was mir aber momentan völlig unklar ist, woher die DefaultIcons kommen.
Nicht alle Datei-Erweiterungen liefern auch etwas zurück. Es fehlt auf jeden Fall noch das Exception handling
und der Fallback zu DefaultIcons (wo auch immer diese zu finden sind)

Das soll nur ein Anstoß in die richtige Richtung sein. Vielleicht kann auch was mit ctypes machen.

Re: Datei-Icons darstellen

Verfasst: Dienstag 4. Februar 2020, 17:06
von __blackjack__
Eventuell wäre auch ExtractAssociatedIconA() eine interessante Funktion an dieser Stelle.