AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Icon aus beliebiger Datei extrahieren (z.B. *.lnk)
Thema durchsuchen
Ansicht
Themen-Optionen

Icon aus beliebiger Datei extrahieren (z.B. *.lnk)

Ein Thema von Martin K · begonnen am 20. Okt 2005 · letzter Beitrag vom 20. Okt 2005
Antwort Antwort
Seite 2 von 3     12 3      
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#11

Re: Icon aus beliebiger Datei extrahieren (z.B. *.lnk)

  Alt 20. Okt 2005, 17:45
Jo, danke erst mal.

Aber die letzte Zeile will Delphi irgendwie nich annehmen...
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#12

Re: Icon aus beliebiger Datei extrahieren (z.B. *.lnk)

  Alt 20. Okt 2005, 17:48
leider, leider, leider....
funzt bei mir immer noch nich!

Was hast Du gemacht, damit's geht ???

Hab die letzt Zeile einfach weggelassen und PaintBox1 mit Image1 ersetzt.
Programm läuft auch, aber das Image1 ist einfach nur weiß...
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#13

Re: Icon aus beliebiger Datei extrahieren (z.B. *.lnk)

  Alt 20. Okt 2005, 17:48
die kannste rausnehmen hab ich auch gemacht. es könnte dann nur sein, dass du, wenn du 1000000 Icons ausgelesen hast, der Speicher voll is, weil du die Imagelist nicht mehr leermachst [zur letzten Zeile]

du musst den Code eben so weit abkürzen, dass er sich nurnoch um das Icon kümmert. Ich machs mal schnell...
Michael Enßlin
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#14

Re: Icon aus beliebiger Datei extrahieren (z.B. *.lnk)

  Alt 20. Okt 2005, 17:52
Warum läufts bei mir nich?


?????
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#15

Re: Icon aus beliebiger Datei extrahieren (z.B. *.lnk)

  Alt 20. Okt 2005, 17:53
Jau, so gehts auch:
Delphi-Quellcode:
function FileIcon(Name: String):ticon;
var
  FileInfo: TSHFileInfo;
  ImageListHandle: THandle;
  aIcon: TIcon;
begin
  FillChar(FileInfo, SizeOf(FileInfo), #0);
  ImageListHandle := SHGetFileInfo(
    PChar(Name), 0, FileInfo, SizeOf(FileInfo),
    SHGFI_ICON or SHGFI_LARGEICON
  );
  try
    aIcon := TIcon.Create;
    try
      aIcon.Handle := FileInfo.hIcon;
      aIcon.Transparent := True;
    except end;
  except end;
  result:=aicon;
end;
der liefert dir dann ein gültiges Icon zurück.
Michael Enßlin
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#16

Re: Icon aus beliebiger Datei extrahieren (z.B. *.lnk)

  Alt 20. Okt 2005, 17:55
warte mal....
Hab grad als Parameter einfach '' übergeben, also:
  DrawFile(''); Und es wird das Windows-Ordner Symbol angezeigt !!!

? Muss also an der *.lnk Datei liegen ?
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#17

Re: Icon aus beliebiger Datei extrahieren (z.B. *.lnk)

  Alt 20. Okt 2005, 17:59
Der neue Code funzt auch nur, wenn ich einen Ordner also
Image1.Picture.Icon:=FileIcon(''); übergebe.

Aber nicht bei meiner *.lnk Datei
Geht's denn bei dir mit einer *.lnk Verknüpfung ?
  Mit Zitat antworten Zitat
ichbins

Registriert seit: 9. Jul 2005
Ort: Hohenaltheim
1.001 Beiträge
 
Delphi 2005 Personal
 
#18

Re: Icon aus beliebiger Datei extrahieren (z.B. *.lnk)

  Alt 20. Okt 2005, 18:01
lnks kann er bei mir schon auslesen. mach mal nicht image1.picture.icon sondern image1.canvas.draw(fileicon(filename));

hier mal mein source:
Delphi-Quellcode:
function FileIcon(Name: String):ticon;
var
  FileInfo: TSHFileInfo;
  ImageListHandle: THandle;
  aIcon: TIcon;
begin
  FillChar(FileInfo, SizeOf(FileInfo), #0);
  ImageListHandle := SHGetFileInfo(
    PChar(Name), 0, FileInfo, SizeOf(FileInfo),
    SHGFI_ICON or SHGFI_LARGEICON
  );
  try
    aIcon := TIcon.Create;
    try
      aIcon.Handle := FileInfo.hIcon;
      aIcon.Transparent := True;
    except end;
  except end;
  result:=aicon;
end;


procedure TForm1.Button1Click(Sender: TObject);
begin
  if not opendialog1.Execute then exit;
  Application.Icon:=fileicon(opendialog1.FileName);
end;
bei mir stellt er das ausgelesene Icon als Anwendungssymbol ein. Klappt prima.


[edit] sch... eigentlich müsste ich ja eine dialektische Erörterung als Deutsch-Hausaufgabe schreiben... aber Mammi wird schon nicht schauen.
Michael Enßlin
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#19

Re: Icon aus beliebiger Datei extrahieren (z.B. *.lnk)

  Alt 20. Okt 2005, 18:04
Bei
image1.canvas.draw(fileicon(.......)); kommt:
Zitat:
[Error] Unit1.pas(56): Incompatible types: 'Integer' and 'TIcon'
  Mit Zitat antworten Zitat
Benutzerbild von Martin K
Martin K

Registriert seit: 20. Okt 2005
919 Beiträge
 
Turbo Delphi für Win32
 
#20

Re: Icon aus beliebiger Datei extrahieren (z.B. *.lnk)

  Alt 20. Okt 2005, 18:05
Hmm... Deutsch...
Also ich hab Herbstferien!!!

Übrigens kannst du deinen Code noch vereinfachen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
begin
  if opendialog1.Execute then
     Application.Icon:=fileicon(opendialog1.FileName);
end;
Aber vielen vielen Dank für deine Hilfe, werd's schon hinkriegen!
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 2 von 3     12 3      


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 18:29 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