Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Win32/Win64 API (native code) (https://www.delphipraxis.net/17-win32-win64-api-native-code/)
-   -   Delphi Index eines Ordnersymbols aus System32 ermitteln (https://www.delphipraxis.net/151443-index-eines-ordnersymbols-aus-system32-ermitteln.html)

Tod787 18. Mai 2010 10:57


Index eines Ordnersymbols aus System32 ermitteln
 
Gibt es eine Funktion mit der ich bei einem Ordner den Symbolindex der system32.dll ermitteln kann?

also sowas wie GetSystem32Index(Filename: String): Integer

SirThornberry 18. Mai 2010 11:03

Re: Index eines Ordnersymbols aus System32 ermitteln
 
Wozu brauchst du das? Wenn du zum Beispiel nur das Icon anzeigen lassen willst brauchst du den Index nicht.

Tod787 18. Mai 2010 11:30

Re: Index eines Ordnersymbols aus System32 ermitteln
 
Ich erstelle in meinem Programm zur Startzeit eine Imageliste mit allen Icons aus der system32.dll. In meiner Umgebung existieren Ordner mit geänderter Symboldarstelung. Ich möchte jetzt von jedem Ordner den Symbolindex auslesen, damit ich ihn im Programm verarbeiten kann.

himitsu 18. Mai 2010 11:52

Re: Index eines Ordnersymbols aus System32 ermitteln
 
Ließ die desktop.ini in dem betreffenden Ordner aus ... darin steht der Index und die Quelldatei des Icons.

Aber Achtung, der Explorer interpretiert diese Datei nur, wenn der Ordner mit dem Systemflag (Dateiattribut) versehen ist, also wäre es besser, wenn du dieses vorher abprüfst.

- erst Attribut prüfen
- dann schauen ob desktop.ini existiert
- und wenn alles vorhanden ist, dann aus der INI die Werte auslesen.

[add]
Das Verzeichnis muß das System-Flag besitzen und die desktop.ini das System- Schreibschutzflag, aber oftmals reicht es, wenn du einfach nur das Flag des Ordners prüfst.

hier einen Code, wo ich was Ähnliches auslese
http://www.delphipraxis.net/internal...072212#1072212

und hier noch ein paar wichtige Infos für dich
http://www.michael-puff.de/Artikel/C...gFolders.shtml

Luckie 18. Mai 2010 12:15

Re: Index eines Ordnersymbols aus System32 ermitteln
 
Zitat:

Zitat von Tod787
Gibt es eine Funktion mit der ich bei einem Ordner den Symbolindex der system32.dll ermitteln kann?

Achtung, die Symbole in den Ressourcendateien können sich von Windows Version zu Windows Version unterscheiden. Das heißt unter verschiedenen Windows Versionen muss der gleiche Index nicht das gleiche Symbol referenzieren!

himitsu 18. Mai 2010 12:21

Re: Index eines Ordnersymbols aus System32 ermitteln
 
Zitat:

Zitat von Luckie
Achtung, die Symbole in den Ressourcendateien können sich von Windows Version zu Windows Version unterscheiden.

stimmt soweit, aber :angel2:
Zitat:

Zitat von Tod787
Ich erstelle in meinem Programm zur Startzeit eine Imageliste mit allen Icons aus der system32.dll.

Wichtiger wäre da:
Achtung, nicht alle verwendeten Icons müssen aus der system32.dll stammen.

Luckie 18. Mai 2010 12:35

Re: Index eines Ordnersymbols aus System32 ermitteln
 
Das war auch nur als zusätzlicher Hinweis gedacht. Nicht dass da irgendwas hardcodiert wird oder so.

Tod787 18. Mai 2010 14:47

Re: Index eines Ordnersymbols aus System32 ermitteln
 
Super! Vielen Dank für den Hinweis zur Desktop.Ini! Die eine Richtung funktioniert schonmal sehr gut. Die Frage ist jetzt wie ich das Ganze in die andere Richtung realisiere. Also vom Programm aus einem Windowsordner ein Symbol zuweisen.

Halte ich mich an die Symbole aus der system32.dll müsste ich doch "nur" aus dem Programm heraus in der jeweiligen desktop.ini den Index ändern. Doch wie du schon befüchtet hast soll das Programmaber auch anbieten den Ordnern neue, eigene Icons als Symbol zuweisen zu können. Allerdings nur vom Programm zum System und nicht umgekehrt. Habe momentan eine Datenbank mit Blobfeldern die ich nachdem ich die Imagelist mit den Icons der system32.DLL fülle einfach noch oben drauf packe.

Index 0-240 -> Icons aus der System32.DLL
Index 241-x -> neue Icons

himitsu 18. Mai 2010 15:05

Re: Index eines Ordnersymbols aus System32 ermitteln
 
Du mußt dann im Prinzip nur die desktop.ini erstellen, bzw die beiden Werte (Name und Index) ändern
Delphi-Quellcode:
[.ShellClassInfo]
IconFile=user.ico
IconIndex=0
(geht ja ganz leicht, über TIniFile)

Und dann nicht vergessen, wenn die Datei von TIniFile neu erstellt wurde (FileExists fand sie vor dem Speichern nicht), die Attribute der Datei und des Ordners anpassen.

Tod787 20. Mai 2010 16:11

Re: Index eines Ordnersymbols aus System32 ermitteln
 
Klappt alles wunderbar! Danke für die Unterstützung!


Alle Zeitangaben in WEZ +1. Es ist jetzt 06:09 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz