AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Dateisymbole ohne *.exe

Ein Thema von silentAMD · begonnen am 6. Mai 2004 · letzter Beitrag vom 11. Mai 2004
Antwort Antwort
silentAMD

Registriert seit: 27. Sep 2003
203 Beiträge
 
Turbo Delphi für Win32
 
#1

Dateisymbole ohne *.exe

  Alt 6. Mai 2004, 20:01
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:

if not ExtractFileExt(rec.name) = '.exethen ... 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
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#2

Re: Dateisymbole ohne *.exe

  Alt 6. Mai 2004, 20:11
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 () 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.
  Mit Zitat antworten Zitat
silentAMD

Registriert seit: 27. Sep 2003
203 Beiträge
 
Turbo Delphi für Win32
 
#3

Re: Dateisymbole ohne *.exe

  Alt 10. Mai 2004, 21:39
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???
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#4

Re: Dateisymbole ohne *.exe

  Alt 10. Mai 2004, 22:26
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.
  Mit Zitat antworten Zitat
silentAMD

Registriert seit: 27. Sep 2003
203 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Dateisymbole ohne *.exe

  Alt 11. Mai 2004, 22:29
Hi MathiasSimmack,
ich wollte nicht unhöflich sein , 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)
Miniaturansicht angehängter Grafiken
unbenannt_144.jpg  
  Mit Zitat antworten Zitat
Benutzerbild von SirThornberry
SirThornberry
(Moderator)

Registriert seit: 23. Sep 2003
Ort: Bockwen
12.235 Beiträge
 
Delphi 2006 Professional
 
#6

Re: Dateisymbole ohne *.exe

  Alt 11. Mai 2004, 22:32
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...
Jens
Mit Source ist es wie mit Kunst - Hauptsache der Künstler versteht's
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#7

Re: Dateisymbole ohne *.exe

  Alt 11. Mai 2004, 22:34
@silentAMD: Das hatte mit Unhöflichkeit nichts zu tun. Ich bezog mich nur auf deinen Satz
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.
  Mit Zitat antworten Zitat
silentAMD

Registriert seit: 27. Sep 2003
203 Beiträge
 
Turbo Delphi für Win32
 
#8

Re: Dateisymbole ohne *.exe

  Alt 11. Mai 2004, 22:34
hi,
geht das nicht auch mit dem systemicon????
  Mit Zitat antworten Zitat
silentAMD

Registriert seit: 27. Sep 2003
203 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Dateisymbole ohne *.exe

  Alt 11. Mai 2004, 22:37
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...
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#10

Re: Dateisymbole ohne *.exe

  Alt 11. Mai 2004, 22:46
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.
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:18 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