AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Win32/Win64 API (native code) Delphi Dateiicon ermitteln schlägt fehl
Thema durchsuchen
Ansicht
Themen-Optionen

Dateiicon ermitteln schlägt fehl

Ein Thema von Mazel · begonnen am 9. Mär 2008 · letzter Beitrag vom 12. Mär 2008
Antwort Antwort
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#1

Dateiicon ermitteln schlägt fehl

  Alt 9. Mär 2008, 16:40
Hallo,

normal kann und habe ich Dateiicons immer so auslesen können:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
 SHFileInfo: TSHFileInfo;

begin
  SHGetFileInfo(PChar('C:\WINDOWS\explorer.exe'), 0, SHFileInfo, SizeOf(SHFileInfo), SHGFI_ICON or SHGFI_SMALLICON);
  Image1.Picture.Icon.Handle := SHFileInfo.hIcon;
end;
Ich habe die Funktion aus einem anderen Programm, herausgenommen und in eine neue Anwendung gesteckt. Jetzt habe ich das Problem, dass Dateien mit der Endung *.msc nicht das eigentliche Icon liefern sondern immer das Icon für eine nicht verknüpfte Datei. In der alten Anwendung funktioniert dies aber. Beispiel: 'C:\WINDOWS\system32\ciadv.msc'

Weis jemand warum das so ist?
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von Jens Schumann
Jens Schumann

Registriert seit: 27. Apr 2003
Ort: Bad Honnef
1.644 Beiträge
 
Delphi 2009 Professional
 
#2

Re: Dateiicon ermitteln schlägt fehl

  Alt 9. Mär 2008, 17:57
Hallo,
versuche es mal damit.
Delphi-Quellcode:
procedure GetAssociatedIconEx(const Filename : String; Icon : TIcon);
var
  SHFileInfo: TSHFileInfo;
begin
  FillChar(SHFileInfo, SizeOf(TSHFileInfo), 0);
  if (SHGetFileInfo(PChar(Filename), FILE_ATTRIBUTE_NORMAL, SHFileInfo,
    SizeOf(TSHFileInfo), SHGFI_USEFILEATTRIBUTES or SHGFI_ICON or SHGFI_SMALLICON) <> 0) then
  try
    Icon.Handle := CopyIcon(SHFileInfo.hIcon);
  finally
    DestroyIcon(SHFileInfo.hIcon);
  end;
end;
I come from outer space to save the human race
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#3

Re: Dateiicon ermitteln schlägt fehl

  Alt 10. Mär 2008, 16:20
Hallo Jens,

ich habe deine Prozedur einfach jetzt so übernommen, doch leider auch hier das selbe Problem. Es wird nicht das richtige Dateiicon zurückgegeben. Ich verstehe nicht voran das liegen soll. Wie gesagt, in der alten Anwendung, von der ich nur noch ein paar Codereste habe, habe ich die eine Prozedur genommen und in die neue Anwendung gesetzt. Bei allen Dateien geht es, bis auf die *.msc.
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#4

Re: Dateiicon ermitteln schlägt fehl

  Alt 11. Mär 2008, 20:28
Keiner eine Idee woran das liegen könnte?

Kann jemand eventuell einen der beiden Codes testen oder in ein kleines Programm setzen und mir zum Test übergeben?

Würde schon gern den Grund erfahren wollen, warum die Icons von *.msc Dateien nicht angezeigt werden.
Marcel Jänicke
www.mj-software.net
  Mit Zitat antworten Zitat
Benutzerbild von toms
toms
(CodeLib-Manager)

Registriert seit: 10. Jun 2002
4.648 Beiträge
 
Delphi XE Professional
 
#5

Re: Dateiicon ermitteln schlägt fehl

  Alt 11. Mär 2008, 20:49
Hallo, du musst noch CoInitialize aufrufen dann wird das richtige Icon extrahiert.

Delphi-Quellcode:
initialization
  CoInitialize(nil);

finalization
  CoUnInitialize;
Thomas
  Mit Zitat antworten Zitat
Benutzerbild von Mazel
Mazel

Registriert seit: 11. Nov 2005
Ort: Leipzig
831 Beiträge
 
#6

Re: Dateiicon ermitteln schlägt fehl

  Alt 12. Mär 2008, 17:09
Hi,

wie ich gerade mitbekommen habe, war die Unit ActiveX nicht mit eingebunden, an die habe ich gar nicht mehr gedacht. Bei beiden Prozeduren wird sie aber nicht benötigt, aber CoCInitialize; und CoUnInitialize; sind dort wohl deklariert. Diese beiden Funktionen habe ich aber in der alten Anwendung nicht gebraucht aber ActiveX war eingebunden.

Irgendwie versteh ich das nicht.
Marcel Jänicke
www.mj-software.net
  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 09:44 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