Datei-Icons darstellen

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
WalterT
User
Beiträge: 31
Registriert: Dienstag 5. Dezember 2017, 16:00

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
Benutzeravatar
DeaD_EyE
User
Beiträge: 1232
Registriert: Sonntag 19. September 2010, 13:45
Wohnort: Hagen
Kontaktdaten:

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.
sourceserver.info - sourceserver.info/wiki/ - ausgestorbener Support für HL2-Server
Benutzeravatar
__blackjack__
User
Beiträge: 14032
Registriert: Samstag 2. Juni 2018, 10:21
Wohnort: 127.0.0.1
Kontaktdaten:

Eventuell wäre auch ExtractAssociatedIconA() eine interessante Funktion an dieser Stelle.
„A life is like a garden. Perfect moments can be had, but not preserved, except in memory. LLAP” — Leonard Nimoy's last tweet.
Antworten