Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Multimedia (https://www.delphipraxis.net/16-multimedia/)
-   -   Delphi icons von dateien ändern (nicht von Exe ) (https://www.delphipraxis.net/160048-icons-von-dateien-aendern-nicht-von-exe.html)

spartakus 25. Apr 2011 19:14

icons von dateien ändern (nicht von Exe )
 
Hallo,

ich möchte bei z.B. einer .swf datei das Dateisymbol ändern.

hiermit kann man mit diesem Code leicht einer .Exe Datei Icon ändern,
von "unit ABIconChanger" Jaromir Sivic.

Delphi-Quellcode:
procedure TForm1.Button2Click(Sender: TObject);
begin
  if not(FileExists(OpenDialog1.FileName)) then
  begin
    MessageBox(handle,'Please first load icon.','Info',MB_OK or MB_ICONINFORMATION);
    exit;
  end;

  if OpenDialog2.execute then
  begin
    //test if OpenDialog1.FileName has .ico extension8
    if lowercase(ExtractFileExt(OpenDialog1.FileName))='.ico' then
      ChangeIcon(OpenDialog1.FileName,OpenDialog2.FileName)
    else
     ChangeIcon(OpenDialog1.FileName,OpenDialog2.FileName,0)
  end;
end;
nur kann ich leider wie oben nur von .Exe Icon ändern aber nicht die
swf Dateien!
oder ist das nicht möglich mit dieser Code?

lbccaleb 25. Apr 2011 19:19

AW: icons von dateien ändern (nicht von Exe )
 
Nein ist es nicht, da der Icon Changer die Icon Datei in die Exe schreibt! Um aber File Icons zu ändern, muss die Registry dementsprechend geändert werden.

Schau dir mal die Registry im Editor an, die Bäume sind eigentlich fast selbst Erklärend, zumindest die Teile die dafür von nöten sind.

Zacherl 25. Apr 2011 19:24

AW: icons von dateien ändern (nicht von Exe )
 
Es funktioniert folgendermaßen. Wenn du in der Registry eine Dateierweiterung aufschlägst, z.b. HKEY_CLASSES_ROOT\.txt, dann findest du im Standardwert des Schlüssels den Typenbezeichner. In unserem Falle ist dies der Wert: txtfile.

Nun suchst du wiederrum diesen Schlüssel auf:
HKEY_CLASSES_ROOT\txtfile\DefaultIcon

Im Standardwert steht dann der Pfad zur Icon Resource drin:
%SystemRoot%\system32\imageres.dll,-102

Der erste Teil ist der Pfad zur DLL oder EXE, welche die Resource enthält und die Ziffer hinter dem Komma ist der Icon Index innerhalb der Resourcen Library. Durch ändern dieses Wertes kannst du das assoziierte Dateiicon ändern. Ich meine mich allerdings zu erinnern, dass Windows die Änderung erst nach einem Neustart der explorer.exe übernimmt.
Es gab auch eine Funktion, die man benutzen konnte, um ohne Neustart auf die Änderung hinzuweisen. Allerdings ist mir der Name entfallen.

spartakus 25. Apr 2011 19:36

AW: icons von dateien ändern (nicht von Exe )
 
ok ,danke an Zacherl und lbccaleb
ich werde mal probieren

lbccaleb 25. Apr 2011 19:38

AW: icons von dateien ändern (nicht von Exe )
 
Ich war auch der Meinung das es dafür eine Delphi Komponente gab, allerdings brauchte ich die nie und hab dadurch auch den Namen vergessen.Vllt kannst du Sie ja finden wenn du VCL-Components selber durchstöberst ;)

Zacherl 25. Apr 2011 19:49

AW: icons von dateien ändern (nicht von Exe )
 
Grade in der Registry ändern sollte ja nicht das Problem sein. Hier noch der Code zum refreshen des Icon Caches, den ich meinte:
http://www.swissdelphicenter.ch/en/showcode.php?id=1054

spartakus 25. Apr 2011 19:57

AW: icons von dateien ändern (nicht von Exe )
 
Zacherl

sehr nett, danke


Alle Zeitangaben in WEZ +1. Es ist jetzt 01:04 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