AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi SmallIcon mit ExtractAssociatedIcon ???
Thema durchsuchen
Ansicht
Themen-Optionen

SmallIcon mit ExtractAssociatedIcon ???

Ein Thema von max666 · begonnen am 25. Dez 2003 · letzter Beitrag vom 26. Dez 2003
Antwort Antwort
max666

Registriert seit: 21. Dez 2003
50 Beiträge
 
#1

SmallIcon mit ExtractAssociatedIcon ???

  Alt 25. Dez 2003, 12:23
Hallo!

Weiß jemand wie man mit ExtractAssociatedIcon die SmallIcons ließt.

Mit folgender Procedure erhalte ich scheinbar immer nur die LargeIcon, da die Qualität nicht sehr gut ist, wenn sie in Menu-Punkten eingebunden werden.


Delphi-Quellcode:
procedure GetIconFromFile(const FileName: String; const Index: Word);
var apbuf: array [0..2*MAX_PATH] of Char;
  aindx: Word;
  icon1: TIcon;
  icon2: HIcon;
begin
  icon1:=TIcon.Create;
  StrPCopy(apbuf, FileName);
  aindx :=index;
  icon1.Handle:= ExtractAssociatedIcon(HInstance, apbuf, aindx);
  FrmMain.ImageList2.InsertIcon(index, icon1);
end;

Gruß aus dem Emsland!
max666

[edit=Admin]Delphi-Tags ([ delphi] ... [ /delphi]) eingefügt. Künftig bitte selber machen. Danke sehr. Mfg, Daniel[/edit]
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#2

Re: SmallIcon mit ExtractAssociatedIcon ???

  Alt 25. Dez 2003, 12:28
Ich nehme SHGetFileInfo, da kann man mit SHGFI_SMALLICON festlegen, dass man das kleine Symbol haben will.
  Mit Zitat antworten Zitat
MathiasSimmack
(Gast)

n/a Beiträge
 
#3

Re: SmallIcon mit ExtractAssociatedIcon ???

  Alt 25. Dez 2003, 18:51
Boah, da hab ich doch glatt vergessen, meinen Vorschlag zu posten.
Hier ist er, bzw. sie (die Funktion):
Delphi-Quellcode:
uses
  ShellAPI;

function GetIconFromFile(const szFilename: string;
  fSmall: boolean = false): TIcon;
const
  dwIconFlags : array[boolean]of dword =
    (SHGFI_LARGEICON,SHGFI_SMALLICON);
var
  fi : TSHFileInfo;
begin
  Result := nil;

  // Symbol der Datei aus dem System ermitteln
  // Typ (= groß/klein) richtet sich nach dem
  // Funktionsparameter "fSmall" (default = false)
  ZeroMemory(@fi,sizeof(fi));
  SHGetFileInfo(pchar(szFilename),0,fi,sizeof(fi),
    SHGFI_ICON or dwIconFlags[fSmall]);

  // Symbol ermittelt
  if(fi.hIcon <> 0) then
  begin
    Result := TIcon.Create;
    if(Result <> nil) then
      Result.Handle := fi.hIcon;
  end;
end;
Diese Funktion lädt standardmäßig die großen Symbole, was du auch am Funktionskopf erkennen kannst:
Code:
[b]function[/b] GetIconFromFile([b]const[/b] szFilename: [b]string[/b];
  [color=#ff0000]fSmall: boolean = [b]false[/b][/color]): TIcon;
D.h. du musst den zweiten Parameter nicht mal benutzen, wenn du die großen Symbole haben willst:
ImageList1.AddIcon(GetIconFromFile('c:\autoexec.bat')); Da du aber auf die kleinen Symbole wild bist, , hängst du beim Aufruf einfach noch ein true an:
Code:
ImageList1.AddIcon(GetIconFromFile('c:\autoexec.bat',[color=red]true[/color]));
Das war´s.
  Mit Zitat antworten Zitat
max666

Registriert seit: 21. Dez 2003
50 Beiträge
 
#4

Re: SmallIcon mit ExtractAssociatedIcon ???

  Alt 26. Dez 2003, 10:15
Hallo!

Mit Deiner ersten Info konnte ich schon eine Menge anfangen, und habe das Problem auch lösen können. Aber Dein Beispiel ist auch nicht schlecht, da es eleganter programmiert ist als meines.

Danke noch einmal für Deine Antworten.

Gruß
Max
  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 07:48 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