AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Multimedia Delphi Icons von Datei auslesen
Thema durchsuchen
Ansicht
Themen-Optionen

Icons von Datei auslesen

Ein Thema von devnull · begonnen am 25. Okt 2003 · letzter Beitrag vom 25. Okt 2003
Antwort Antwort
Seite 1 von 2  1 2      
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#1

Icons von Datei auslesen

  Alt 25. Okt 2003, 10:31
Hi,

wie kann ich ein ProgrammIcon aus einer Exe-Datei auslesen,
und dieses anschließend in meinem Programm anzeigen lassen ?

Wenn ein Programm mehrere Icons hat, möchte ich für jedes Icon ein neues
Image-Objekt in meinem Fenster erstellen.


Geht das überhaupt und wie kann ich das machen ?

devnull
  Mit Zitat antworten Zitat
Chewie

Registriert seit: 10. Jun 2002
Ort: Deidesheim
2.886 Beiträge
 
Turbo Delphi für Win32
 
#2

Re: Icons von Datei auslesen

  Alt 25. Okt 2003, 10:36
Das Standardicon kannst du mit SHGetFileInfoSHGetFileInfo ermitteln.
Für mehrere Icons wirst du die Resourcen selbst extrrahieren müssen.
Martin Leim
Egal wie dumm man selbst ist, es gibt immer andere, die noch dümmer sind
  Mit Zitat antworten Zitat
Christian Seehase
(Co-Admin)

Registriert seit: 29. Mai 2002
Ort: Hamburg
11.105 Beiträge
 
Delphi 11 Alexandria
 
#3

Re: Icons von Datei auslesen

  Alt 25. Okt 2003, 10:46
Moin Zusammen,

Zitat von Chewie:
Für mehrere Icons wirst du die Resourcen selbst extrrahieren müssen.
oder man nimmt ExtractIconEx.
Wichtig:
Hierzu muss man sich die Funktion selber importieren, da die von Borland bereitgestellte Importvariante, nicht den vollen Funktionsumfang ermöglicht.
Dazu gibt es sogar bei Borland einen Artikel. (#16778 in den Delphi-FAQ).
Tschüss Chris
Die drei Feinde des Programmierers: Sonne, Frischluft und dieses unerträgliche Gebrüll der Vögel.
Der Klügere gibt solange nach bis er der Dumme ist
  Mit Zitat antworten Zitat
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#4

Re: Icons von Datei auslesen

  Alt 25. Okt 2003, 10:52
Hi,

das is wohl das was ich gesucht hab.
Leider versteh ich nich, wie ich mir jetzt das Icon rausholen kann.
Hab diese Mega-Beschreibung angeguckt klappt aber net.


devnull
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#5

Re: Icons von Datei auslesen

  Alt 25. Okt 2003, 10:59
Hi!

Nimm einfach anstatt der paintBox ein Image und gib noch die SaveDialog-Komponente aufs Formular:

Delphi-Quellcode:
//exe auswählen
procedure TForm1.Button1Click(Sender: TObject);
begin
  if OpenDialog1.Execute then
  DrawFile(OpenDialog1.FileName);
end;

//Icon auslesen:
procedure TForm1.DrawFile(Name: String);
var
  FileInfo: TSHFileInfo;
  ImageListHandle: THandle;
  aIcon: TIcon;
begin
  // Speicher löschen
  FillChar(FileInfo, SizeOf(FileInfo), #0);
  // Handle der Image Liste der ausgewählten Datei ermitteln
  ImageListHandle := SHGetFileInfo(
    PChar(Name), 0, FileInfo, SizeOf(FileInfo),
    // großes Icon verlangen
    SHGFI_ICON or SHGFI_LARGEICON
  );
  try
    // TIcon Objekt erstellen
    aIcon := TIcon.Create;
    try
      // Icon Handle zuweisen
      aIcon.Handle := FileInfo.hIcon;
      // Transparent darstellen
      aIcon.Transparent := True;
      with Image1 do begin
         // Paintbox auf die entsprechende Größe bringen
         Width := aIcon.Width;
         Height := aIcon.Height;
         Application.ProcessMessages;
         // Paintbox löschen
         Canvas.Rectangle(-1, -1, Succ(Width), Succ(Height));
         // Icon darstellen
         Canvas.Draw(0, 0, aIcon);
      end;
    finally
      // TIcon Objekt freigeben
      FreeAndNil(aIcon);
    end;
  finally
    // Icon der Shell wieder freigeben
    DestroyIcon(FileInfo.hIcon);
    // Icon Liste der Shell wieder freigeben
    {ImageList_Destroy(ImageListHandle);}
  end;
end;

//Speicher freigeben, da
//ImageList_Destroy(ImageListHandle); nicht funktioniert hatte :)
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
  Free;
end;

//Icon speichern
procedure TForm1.Button2Click(Sender: TObject);
begin
  SaveDialog1.Execute;

  if pos('.bmp', SaveDialog1.filename) = 0 then
  SaveDialog1.fileName := SaveDialog1.FileName + '.bmp';

  Image1.Picture.SaveToFile(SaveDialog1.FileName);
end;
  Mit Zitat antworten Zitat
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#6

Re: Icons von Datei auslesen

  Alt 25. Okt 2003, 11:22
Hi,

ich hab mal die DrawFile ('C:\PROJEKT.EXE'); so in mein Programm eingebunden.
in DrawFile hab ich noch hinzugefügt:

  Image1 := TImage.Create(form1); aber es wird kein icon angezeigt, die datei hat im explorer aber ein icon

devnull
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#7

Re: Icons von Datei auslesen

  Alt 25. Okt 2003, 11:32
Kann es sein, dass das Projekt geöffnet oder schreibgeschützt ist?
  Mit Zitat antworten Zitat
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#8

Re: Icons von Datei auslesen

  Alt 25. Okt 2003, 11:34
@ Matze:
nein, die datei ist weder geöffnet, noch schreibgeschützt

devnull
  Mit Zitat antworten Zitat
Benutzerbild von Matze
Matze
(Co-Admin)

Registriert seit: 7. Jul 2003
Ort: Schwabenländle
14.929 Beiträge
 
Turbo Delphi für Win32
 
#9

Re: Icons von Datei auslesen

  Alt 25. Okt 2003, 11:37
Was passiert, wenn du sie per OpenDialog öffnest? Geht das?
  Mit Zitat antworten Zitat
Benutzerbild von devnull
devnull

Registriert seit: 5. Okt 2003
362 Beiträge
 
Delphi 7 Personal
 
#10

Re: Icons von Datei auslesen

  Alt 25. Okt 2003, 11:39
wie öffnen ?
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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