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 Dateiicon extrahieren - geht das auch schnell? (https://www.delphipraxis.net/89129-dateiicon-extrahieren-geht-das-auch-schnell.html)

Rakshasa 26. Mär 2007 20:36


Dateiicon extrahieren - geht das auch schnell?
 
Hallo,

durch den Aufruf
Code:
...
  SHGetFileInfo(PChar(sDatei), 0, FileInfo, SizeOf(FileInfo), SHGFI_ICON or SHGFI_SMALLICON);
  icon.Handle := FileInfo.hIcon;
...
lese ich das Icon einer Datei. Das funktioniert auch einwandfrei - nur dauert es ziemlich lange. Mein Programm liest mehrere Hundert Dateinamen ein und dieser Vorgang dauert mit Extrahieren des Icons etwa 3-4 mal so lang wie ohne.
Gibt es da eine schnellere Methode???

IngoD7 27. Mär 2007 11:25

Re: Dateiicon extrahieren - geht das auch schnell?
 
Ich weiß nicht, ob das schneller ist:

Delphi-Quellcode:
TIcon.Handle := ExtractIcon(HInstance, PCHAR(sDatei), 0);

Rakshasa 27. Mär 2007 13:40

Re: Dateiicon extrahieren - geht das auch schnell?
 
Zitat:

Zitat von IngoD7
Ich weiß nicht, ob das schneller ist:

Delphi-Quellcode:
TIcon.Handle := ExtractIcon(HInstance, PCHAR(sDatei), 0);


Soweit ich weiß, kann damit nur das große Icon extrahiert werden (?). Ich brauche aber das kleine ...

OregonGhost 27. Mär 2007 13:43

Re: Dateiicon extrahieren - geht das auch schnell?
 
Ich schätze mal, deshalb sieht man regelmäßig Dateimanager, die erstmal die Dateiliste anzeigen und dann im Hintergrund die Icons nachladen und jedes anzeigen, sobald es verfügbar ist. Kann also durchaus sein, dass es keine schnelle Lösung gibt.

Rakshasa 27. Mär 2007 13:59

Re: Dateiicon extrahieren - geht das auch schnell?
 
Zitat:

Zitat von OregonGhost
Ich schätze mal, deshalb sieht man regelmäßig Dateimanager, die erstmal die Dateiliste anzeigen und dann im Hintergrund die Icons nachladen und jedes anzeigen, sobald es verfügbar ist. Kann also durchaus sein, dass es keine schnelle Lösung gibt.


Hmm ... guter Einwand ... :-/

LizardKaiser 27. Mär 2007 15:44

Re: Dateiicon extrahieren - geht das auch schnell?
 
Zitat:

Zitat von Rakshasa
Zitat:

Zitat von IngoD7
Ich weiß nicht, ob das schneller ist:

Delphi-Quellcode:
TIcon.Handle := ExtractIcon(HInstance, PCHAR(sDatei), 0);


Soweit ich weiß, kann damit nur das große Icon extrahiert werden (?). Ich brauche aber das kleine ...

hey ... mal gegooglet? MSDN angesehen?

unter den ersten links bei müsste einer zum codeproject sein ;)
hättest du nach ExtractIcon in der MSDN geschaut hättest du einen link zu ExtractIconEx
gefunden.

beim codeproject (wenn ich mich nun recht erinnere)
wird ExtractIcon und ExtractIconEx (=> kleines Icon) gut erklärt. diese funktion ist keineswegs so "langsam" ;)

alternativ kannst du auch das icon stretchen^^

bitsetter 27. Mär 2007 18:42

Re: Dateiicon extrahieren - geht das auch schnell?
 
Hi,

SittingDuck benutzt dazu die Funktion GethIcon() die gibt auch das Handle des Icons zurück. Als Parameter kannst du da die Icongröße mitgeben. Kannst ja mal testen, ob die etwas schneller ist.

Remko 29. Mär 2007 20:03

Re: Dateiicon extrahieren - geht das auch schnell?
 
Possibly the icons you are looking for are already in the system imagelist? If so, they come out of RAM or cache and that might be a lot faster.


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