Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Programmieren allgemein (https://www.delphipraxis.net/40-programmieren-allgemein/)
-   -   Extrahieren des ICONs von BELIEBIGEM Dateityp? (https://www.delphipraxis.net/149626-extrahieren-des-icons-von-beliebigem-dateityp.html)

stho 25. Mär 2010 14:45


Extrahieren des ICONs von BELIEBIGEM Dateityp?
 
Hallo Leute,

Ich möchte gerne wissen wie ich Icons aus beliebigen Dateien (oder die mit diesen Dateien verknüpften ICONs) als BMP bekommt...
Wie man die ICONs aus .DLLs und .EXE Dateien bekommt wird ja hier im Forum oft genug beschrieben...
Aber ich möchte, wenn ich eine DLL Datei anwähle, das Icon das für diese DLL datei steht haben...
Oder wenn ich eine .REG oder .INI datei habe möchte ich das Icon was für diesen Dateityp steht.

Wie bekomme ich das hin? :gruebel:
Hat das jemand schonmal gemacht oder kann mir einen Denkstupser in irgend eine Richtung geben?

Liebe Grüße

Willmar.Heinrich 25. Mär 2010 15:27

Re: Extrahieren von ICON von BELIEBIGER Datei?
 
Mir nicht ganz klar, ob Du das mit Delphi umsetzen willst. Ansonsten gibts genau dafür den kostenlosen "Icon Snatcher".

stho 25. Mär 2010 15:31

Re: Extrahieren von ICON von BELIEBIGER Datei?
 
ja, mit delphi währe mir schon wichtig...
Ich möchte bestimmte Dateien (.DLL, .INI, .DAT, ...) in denen Benutzerspezifische Dinge stehen in einer Datenbank speichern.
Natürlich ist es in der Datenbank-Übersicht praktisch die Daten auch mit den Icons zu sehen die sie zum Zeitpunkt des Einspielen hatten....

invalid_operation 25. Mär 2010 15:32

Re: Extrahieren von ICON von BELIEBIGER Datei?
 
Da wird Ihnen geholfen: http://tinyurl.com/yhs6xx7

"währe" oder "wäre"? Wahr oder was?

http://angusj.com/resourcehacker/

Meflin 25. Mär 2010 15:36

Re: Extrahieren von ICON von BELIEBIGER Datei?
 
Zitat:

Zitat von invalid_operation
Da wird Ihnen geholfen: http://tinyurl.com/yhs6xx7

Setzen, 6. Aufgabenstellung nochmal lesen.

stho 25. Mär 2010 15:38

Re: Extrahieren von ICON von BELIEBIGER Datei?
 
Zitat:

Zitat von invalid_operation
Da wird Ihnen geholfen: http://tinyurl.com/yhs6xx7

-.-
ja ist klar... und wenn du eine Lösung bei google findest teile es mir bitte mit, okay?
Denn ich habe KEINE gefunden...
Achja, und wenn du gelesen hättest was ich bisher geschrieben hätte würdest du nicht so ein unqualifiziertes kommentar ab geben.

ich HABE Google gefragt, ich HABE die SuFu genutzt und habe trotzdem KEINE antwort auf mein Problem gefunden...

Denn ich will NICHT aus .exe extrahieren und NICHT aus .dlls extrahieren (Solche Anleitungen gab es zu hauf)



EDIT:
@Meflin: :thumb:

invalid_operation 25. Mär 2010 15:51

Re: Extrahieren von ICON von BELIEBIGER Datei?
 
Sorry, hab's wohl falsch verstanden!

Aus einer .txt-Datei bekommst Du kein Icon heraus, weil keins drin ist.

Das Icon zu einer .txt-Datei bekommt man über die Registry heraus.

SirThornberry 25. Mär 2010 15:54

Re: Extrahieren des ICONs von BELIEBIGEM Dateityp?
 
er will letzendlich auch nicht das Icon extrahieren sondern das assoziierte Symbol einer Datei (das Symbol welches im Explorer angezeigt wird) haben.
Dafür gibt es definitiv eine ApiFunktion welche ich auch bereits genutzt habe. Leider finde ich sie nicht. Ich glaube die Funktion hieß ExtractAssociatedIcon.

invalid_operation 25. Mär 2010 15:57

Re: Extrahieren von ICON von BELIEBIGER Datei?
 
Zitat:

Zitat von Meflin
Zitat:

Zitat von invalid_operation
Da wird Ihnen geholfen: http://tinyurl.com/yhs6xx7

Setzen, 6. Aufgabenstellung nochmal lesen.

Beantrage eine runde 3 wegen der etwas unscharfen Fragestellung ;-)

stho 25. Mär 2010 16:00

Re: Extrahieren von ICON von BELIEBIGER Datei?
 
Zitat:

Zitat von invalid_operation
Zitat:

Zitat von Meflin
Zitat:

Zitat von invalid_operation
Da wird Ihnen geholfen: http://tinyurl.com/yhs6xx7

Setzen, 6. Aufgabenstellung nochmal lesen.

Beantrage eine runde 3 wegen der etwas unscharfen Fragestellung ;-)

das liegt letztenendes am lehrer ;-)
Sorry das ich so nen bissel abgedreht bin.
ich mags auch nicht wenn jemand keine SuFu oder google nutzt...

naja, bald ist wochenende ^^ ich merke, ich bin reif für Urlaub

Meflin 25. Mär 2010 17:10

Re: Extrahieren von ICON von BELIEBIGER Datei?
 
Zitat:

Zitat von invalid_operation
Beantrage eine runde 3 wegen der etwas unscharfen Fragestellung ;-)

:warn: Über Noten wird nicht verhandelt :mrgreen:

Deep-Sea 26. Mär 2010 07:29

Re: Extrahieren des ICONs von BELIEBIGEM Dateityp?
 
Delphi-Quellcode:
uses ShellAPI, Math;

function GetFileIcon(AFileName: String; ASmall: Boolean = True; AIndex: Integer = 0): HIcon;
var
  LDummy: HIcon;
  LInfo: TSHFileInfo;
begin
  LDummy := 0;
  If ExtractIconEx(PChar(AFileName), -1, LDummy, LDummy, 0) <> 0 then
  begin
    If ASmall then ExtractIconEx(PChar(AFileName), AIndex, LDummy, Result, 1)
      else ExtractIconEx(PChar(AFileName), AIndex, Result, LDummy, 1);
  end else begin
    SHGetFileInfo(PChar(SysUtils.ExtractFileExt(AFileName)),
      FILE_ATTRIBUTE_NORMAL, LInfo, SizeOf(TSHFileInfo),
        IfThen(ASmall, SHGFI_SMALLICON, SHGFI_LARGEICON) or
          SHGFI_ICON or SHGFI_USEFILEATTRIBUTES);
    Result := LInfo.HIcon;
  end;
end;
Die Funktion gibt das Icon-Handle von jeder beliebigen Datei zurück - wenn die Datei keines besitzt, wird eben das Standard-Windows-Icon geholt. Läuft bei mir auf D2009, sollte aber auch auf anderen laufen ...
Wenn ASmall true ist gibt es an, dass kleine Icons geholt werden (16x16), bei false große (32x32). Warum Windows das so komisch macht und man keine Chance hat an evtl. vorhandene andere Größen ran zu kommen weiß ich net :gruebel:

Ich hoffe das läuft und ist das, was du wolltest :wink:

PS: Die Unit Math kann raus, wenn man das "IfThen" umgeht.

stho 26. Mär 2010 09:13

Re: Extrahieren des ICONs von BELIEBIGEM Dateityp?
 
Zitat:

Zitat von Deep-Sea
Delphi-Quellcode:
uses ShellAPI, Math;

function GetFileIcon(AFileName: String; ASmall: Boolean = True; AIndex: Integer = 0): HIcon;
var
  LDummy: HIcon;
  LInfo: TSHFileInfo;
begin
  LDummy := 0;
  If ExtractIconEx(PChar(AFileName), -1, LDummy, LDummy, 0) <> 0 then
  begin
    If ASmall then ExtractIconEx(PChar(AFileName), AIndex, LDummy, Result, 1)
      else ExtractIconEx(PChar(AFileName), AIndex, Result, LDummy, 1);
  end else begin
    SHGetFileInfo(PChar(SysUtils.ExtractFileExt(AFileName)),
      FILE_ATTRIBUTE_NORMAL, LInfo, SizeOf(TSHFileInfo),
        IfThen(ASmall, SHGFI_SMALLICON, SHGFI_LARGEICON) or
          SHGFI_ICON or SHGFI_USEFILEATTRIBUTES);
    Result := LInfo.HIcon;
  end;
end;
Die Funktion gibt das Icon-Handle von jeder beliebigen Datei zurück - wenn die Datei keines besitzt, wird eben das Standard-Windows-Icon geholt. Läuft bei mir auf D2009, sollte aber auch auf anderen laufen ...
Wenn ASmall true ist gibt es an, dass kleine Icons geholt werden (16x16), bei false große (32x32). Warum Windows das so komisch macht und man keine Chance hat an evtl. vorhandene andere Größen ran zu kommen weiß ich net :gruebel:

Ich hoffe das läuft und ist das, was du wolltest :wink:

PS: Die Unit Math kann raus, wenn man das "IfThen" umgeht.

ich bedanke mich vielmals für deine hilfe ^^
Ich kann den Code leider erst heute abend ausprobieren. (bin an der arbeit...)
Ich melde mich dann aber wenn ich es damit geschafft habe :-P

:dp:

rollstuhlfahrer 26. Mär 2010 14:37

Re: Extrahieren des ICONs von BELIEBIGEM Dateityp?
 
ich glaub zwar, das das hier im Grunde das gleiche ist: http://www.delphipraxis.net/internal...037769#1037769
Allerdings handelt es sich hierbei um eine TImageList, die man doch recht simpel verwenden kann (wenn so was gefragt wird)

Bernhard


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