![]() |
Dateiicon ermitteln schlägt fehl
Hallo,
normal kann und habe ich Dateiicons immer so auslesen können:
Delphi-Quellcode:
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'
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; Weis jemand warum das so ist? |
Re: Dateiicon ermitteln schlägt fehl
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; |
Re: Dateiicon ermitteln schlägt fehl
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. |
Re: Dateiicon ermitteln schlägt fehl
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. |
Re: Dateiicon ermitteln schlägt fehl
Hallo, du musst noch CoInitialize aufrufen dann wird das richtige Icon extrahiert.
Delphi-Quellcode:
initialization
CoInitialize(nil); finalization CoUnInitialize; |
Re: Dateiicon ermitteln schlägt fehl
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. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 07:30 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz