Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   GUI-Design mit VCL / FireMonkey / Common Controls (https://www.delphipraxis.net/18-gui-design-mit-vcl-firemonkey-common-controls/)
-   -   Delphi Dateisymbole ohne *.exe (https://www.delphipraxis.net/21706-dateisymbole-ohne-%2A-exe.html)

silentAMD 6. Mai 2004 19:01


Dateisymbole ohne *.exe
 
Hi,
ich möchte in einer listview die shell-symbole auslesen AUSSER die "speziellen" und dateispezifischen icons von exe-dateien.
ich möchte das ganze machen OHNE sowas:

Delphi-Quellcode:
if not ExtractFileExt(rec.name) = '.exe' then ...
wie in den zip-archiven von windows xp (da wird ja auch nicht für jede exe-datei im archiv das symbol ausgelesen.)


PLEASE HELP!!!!!!!!!!!!!!!

mfg

MathiasSimmack 6. Mai 2004 19:11

Re: Dateisymbole ohne *.exe
 
Das funktioniert am einfachsten mit der Zuweisung der so genannten System-Imagelist. Wenn du die bspw. an deine List-View übergibst, dann kannst du mit der Funktion [dp]"SHGetFileInfo"[/dp] den Icon-Index einer Datei auslesen, der dann exakt auf das Icon in der Sys-IL verweist. Und da deine List-View dann ja die Sys-IL benutzt, brauchst du als "ImageIndex" nur den ermittelten Wert zuweisen, und voilà.

Und wo kann man was dazu erfahren, wenn nicht in den viel zitierten, oft kopierten, nie erreichten (:mrgreen:) Win32-API-Tutorials. Die dortige List-View-Demo macht genau das, was du erreichen willst. Sie ist allerdings nonVCL, was aber kein Problem sein dürfte, da du den zugrunde liegenden Code auch in VCL-Projekten nutzen kannst.

silentAMD 10. Mai 2004 20:39

Re: Dateisymbole ohne *.exe
 
hi,
mir geht es nicht darum die icons ins listview zu bekommen sondern dass alle symbole ausgelesen werden bis auf die von EXE-dateien (da diese ja immer "speziell" sind, sprich für (fast) jede exe-datei ein eigenes symbol), denn die auslese-zeiten sind mir zu hoch...

hat jemand ein tipp???

MathiasSimmack 10. Mai 2004 21:26

Re: Dateisymbole ohne *.exe
 
Ich glaube, ich muss deutlicher werden -

Die angesprochene System-Imageliste enthält die Symbole von allen Dateitypen und Dateien, die du auch im Explorer siehst. Und welches Symbol wird dir im Explorer bei irgendeiner Exe angezeigt?
So gesehen läuft es exakt auf das hinaus was du eigentlich wissen willst. Dein Problem war in dem Fall eben nur, dass du meinen Tipp abgelehnt hast ohne ihn auszuprobieren. Das ist nicht mein Problem.

Hier also mein letzter Tipp zu diesem Thema. Mehr muss man dazu nicht sagen.

Wenn das immer noch nicht das ist, was du willst, dann solltest du deutlicher werden.

silentAMD 11. Mai 2004 21:29

Re: Dateisymbole ohne *.exe
 
Liste der Anhänge anzeigen (Anzahl: 1)
Hi MathiasSimmack,
ich wollte nicht unhöflich sein :oops: , aber: ich habe sehr wohl deinen tipp befolgt, mit ausnahme der HIMAGELIST. ich habs so gemacht:

Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
var fi: TSHFileInfo;
begin
 hImgSm := TImageList(SHGetFileInfo(nil,0,fi,sizeof(fi),SHGFI_SYSICONINDEX or SHGFI_SMALLICON));
 if (hImgSm <> nil) then listview1.smallimages := hImgSm;
end;
aber ich mach lieber noch n screenshoot (anhang)

SirThornberry 11. Mai 2004 21:32

Re: Dateisymbole ohne *.exe
 
Dann erstelle ein Symbol was du angezeigt haben willst wenn es eine Exe-datei ist. Und dieses fügst du dann in die Imageliste mit ein. Und wenn es eine Exe-Datei ist weißt du den Index deines symbols dem item zu?! Hoffe ich habs ni falsch verstanden...

MathiasSimmack 11. Mai 2004 21:34

Re: Dateisymbole ohne *.exe
 
@silentAMD: Das hatte mit Unhöflichkeit nichts zu tun. Ich bezog mich nur auf deinen Satz
Zitat:

Zitat von silentAMD
[...] denn die auslese-zeiten sind mir zu hoch...

Und der stimmt eben nicht, wenn du mit der System-Liste arbeitest, denn im Explorer dauert´s ja nur evtl. beim Zugriff auf CDs (wenn man bspw. ein AntiViren-Tool laufen hat) eine Weile bevor man das Symbol von EXEn sieht. ;)

silentAMD 11. Mai 2004 21:34

Re: Dateisymbole ohne *.exe
 
hi,
geht das nicht auch mit dem systemicon???? :?: :gruebel:

silentAMD 11. Mai 2004 21:37

Re: Dateisymbole ohne *.exe
 
ich hab antivir und das dauert saulange! ich weiß ja nicht was ihr benutzt, aber bei mir dauert so ne große exe von >= 80MB so 10 sekunden!! des is viel... :mrgreen:

MathiasSimmack 11. Mai 2004 21:46

Re: Dateisymbole ohne *.exe
 
Ich habe auch AntiVir, und ich gebe zu: Das ist ein Schwachpunkt. Mein altes Norton AV hatte das Problem nicht. Aber meist (da ich ja eigentlich nur eigene CDs benutze) klappe ich den Regenschirm mal kurz zu, wenn ich auf CDs zugreifen möchte. ;)


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