AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Delphi-PRAXiS - Lounge Betriebssysteme Windows - benutzerdefinierte Symbole zu Dateitypen
Thema durchsuchen
Ansicht
Themen-Optionen

Windows - benutzerdefinierte Symbole zu Dateitypen

Ein Thema von MicMic · begonnen am 23. Aug 2018 · letzter Beitrag vom 24. Aug 2018
Antwort Antwort
Ghostwalker

Registriert seit: 16. Jun 2003
Ort: Schönwald
1.299 Beiträge
 
Delphi 10.3 Rio
 
#1

AW: Windows - benutzerdefinierte Symbole zu Dateitypen

  Alt 24. Aug 2018, 05:43
Wie KodeZwerg schon sagte, könntest du vorab in der Registry checken, ob eine eine Endung ein specifisches Symbol hat oder nicht.

Sollte eines hinterlegt sein ->Das nehmen
Ansonsten -> eigenes rein.
Uwe
e=mc² or energy = milk * coffee²
  Mit Zitat antworten Zitat
Benutzerbild von KodeZwerg
KodeZwerg

Registriert seit: 1. Feb 2018
3.691 Beiträge
 
Delphi 11 Alexandria
 
#2

AW: Windows - benutzerdefinierte Symbole zu Dateitypen

  Alt 24. Aug 2018, 09:07
Eine Möglichkeit wäre noch, mit meiner Registry Methodik von oben, den Dateinamen zu checken. ImgRes.dll und so etwas enthalten Standard-Icons, blätter einfach mal die Registry ein wenig durch um die Liste der Standards zu erweitern. Ich kenne leider nicht alle aus dem Kopf heraus, aber das wäre noch eine Möglichkeit.

Oder micro-Vorab-Test mit dem Verzeichnis Namen, wenn sich Datei nicht in \Windows\ (oder +sub) befindet kann man eigentlich zu 100% von einem UserIcon ausgehen.


PS:
Wenn Du über PIDLs das ganze verwirklichst, ist Geschwindigkeit so schnell wie Windows selbst. (ShellApi)
Gruß vom KodeZwerg

Geändert von KodeZwerg (24. Aug 2018 um 09:16 Uhr)
  Mit Zitat antworten Zitat
Delphi.Narium

Registriert seit: 27. Nov 2017
2.598 Beiträge
 
Delphi 7 Professional
 
#3

AW: Windows - benutzerdefinierte Symbole zu Dateitypen

  Alt 24. Aug 2018, 12:40
Also (unwissenschaftich und eher umgangssprachlich ohne Anspruch auf abolute Korrektheit ... formuliert):

Du hast eine Datei.
Nimmst deren Endung.
Schaust nach, ob in der Registry ein Symbol vorgegeben ist.
Wenn ja, merkst Du Dir für diese Endung das Symbol und musst bei nachfolgenden Dateien mit der Endung nicht mehr prüfen.

Findest Du in der Registry nix zu der Dateieindung, dann schaust Du in der Datei nach, ob sie ein Icon enthält. Wenn ja, nimmst Du das.

Jetzt musst Du nur noch herausfinden, welche Dateiendungen überhaupt zu Dateien gehören, die Icons enthalten könnten.

Da wären z. B. die Dateiendung .exe.

.lnk dürfte auf die verlinkte Datei und deren Symbol verweisen.

Bei .msc steht bei DefaultIcon z. B. %1.
Heißt, soweit ich weiß: Willst Du das Icon wissen, dann schaue bitte gefälligst in der Datei nach.

Beim Lesen von Verzeichnisstrukturen und dem Ermitteln von Icons zu Dateiendungen, musst Du halt pro Dateiendung einmal nachschauen. Steht in der Registry ein Hinweis auf das zu verwendende Icon, dann nimm es und merke es Dir. Für diese Dateiendung musst Du dann nichtmehr nachschauen.

Manchmal findet man auch bei DefaultIcon sowas: dxmasf.dll,-502
Dann muss man in die dort angegeben Datei schauen und da das Icon -502 (oder welche Zahl da auch stehen mag) auslesen.

Suchmaschinenergebnis(se):
https://msdn.microsoft.com/de-de/library/cc431255.aspx
https://entwickler-forum.de/showthre...nern-ermitteln
https://swissdelphicenter.ch/de/printcode.php?id=218
https://www.delphipraxis.net/195173-...ermitteln.html
  Mit Zitat antworten Zitat
MicMic

Registriert seit: 26. Mai 2018
296 Beiträge
 
Delphi 10.2 Tokyo Starter
 
#4

AW: Windows - benutzerdefinierte Symbole zu Dateitypen

  Alt 24. Aug 2018, 18:40
Danke für die reichlichen Infos
Hab mich inzwischen auch in der Registry umgeschaut. Kannte auch schon "DefaultIcon". Nutze dies auch bei anderen Dingen.

Technisch gesehen wär's möglich aber nicht der beste Weg. Hier und da müsste man ja dann auch weitere Schlüssel folgen, da nicht immer DefaultIcon vorhanden ist wo man es erwartet (steht auch in einem Link so). Da man das ganze sowieso zwischenspeichern würde, um nicht ständig aus der Registry neu zu lesen, mache ich jetzt gleich eine User-Einstellung daraus. Der Benutzer kann dann entscheiden, welche Dateiendungen spezielle Icon-Lade-Routinen zugewiesen werden. Also hier als Beispiel dann ".exe", ".msc", ".lnk", ".url". Da muss ich dann mal schauen, welche Dateiendungen noch zutreffen könnten. Alle anderen Dateiendungen bekommen das besagte verknüpfte Standard-Symbol... also hier einfach "SHGFI_USEFILEATTRIBUTES" für SHGetFileInfo.

Wünsch euch viel Spaß am Wochenende mit neuen kreativen Bits und Bytes

Michael
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 14:21 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz