![]() |
Dateitypen und deren Icon auslesen (Problem)
Servus,
eines vorweg, wie ich dateitypen und deren Icons auslese ist mir bekannt ABER es gibt Dateitypen die NICHT auf normalen Wegen angesprochen werden zb: Normaler weg .txt -> txtfile HKEY_CLASSES_ROOT\txtfile\DefaultIcon Hier steht das Icon so weit so gut! ABER zum Beispiel das Programm Alcohol 120% macht es anders nur wie? Das der Eintrag für den Typen CCD
Code:
[HKEY_CLASSES_ROOT\AlcoholImageFile]
@="" "EditFlags"=dword:00000000 [HKEY_CLASSES_ROOT\AlcoholImageFile\DefaultIcon] @="%1" [HKEY_CLASSES_ROOT\AlcoholImageFile\ShellEx] [HKEY_CLASSES_ROOT\AlcoholImageFile\ShellEx\ContextMenuHandlers] [HKEY_CLASSES_ROOT\AlcoholImageFile\ShellEx\ContextMenuHandlers\AlcoholShellEx] @="{32020A01-506E-484D-A2A8-BE3CF17601C3}" [HKEY_CLASSES_ROOT\AlcoholImageFile\ShellEx\IconHandler] @="{32020A01-506E-484D-A2A8-BE3CF17601C3}" Habe herausgefunden mit hilfe des Explorers das eine DLL für die Icons per regsvr32 registriert wurde. Deregistriere ich diese File, kann auch der Explorere das icon zum besagten Typen nicht anzeigen... Kann mir aber nun jemand erkläre wie das geht? Wie ich das nutzten kann? |
Re: Dateitypen und deren Icon auslesen (Problem)
Es wird eine ShellExtension verwendet
|
Re: Dateitypen und deren Icon auslesen (Problem)
Hmm sowwit wie es heisst war ich auch schon!
Nur wie kann ich ein solches Icon ausgebe in meinem IconChange? Es geht mit aber nicht um einen EIntrag im Menü des Exploreres sonder um die Icons der Dateitypen die irgendwie damit zusammen hängen! |
Re: Dateitypen und deren Icon auslesen (Problem)
![]() |
Re: Dateitypen und deren Icon auslesen (Problem)
|
Re: Dateitypen und deren Icon auslesen (Problem)
Zitat:
|
Re: Dateitypen und deren Icon auslesen (Problem)
Zitat:
ABer es geht ja auch dann ums ändern des Icons! Oder kann ich dies dann auf normalen Wege tun? |
Re: Dateitypen und deren Icon auslesen (Problem)
Es geht NICHT mit -> SHGetFileInfo... es wird mir dann KEIN Icon angezeigt bzw das Windows Icon für nicht definierte Typen!
Wenn ich dann im Gegensatz es mit der Endung TXT versuche wird mir das Icon angezeigt
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_ICON or SHGFI_USEFILEATTRIBUTES) <> 0) then try Icon.Handle := CopyIcon(SHFileInfo.hIcon); finally DestroyIcon(SHFileInfo.hIcon); end; end; // GEHT procedure TExtMan_form.FlatButton1Click(Sender: TObject); begin GetAssociatedIconEx('Test.txt', Icon.Picture.Icon); end; // GEHT NICHT procedure TExtMan_form.FlatButton2Click(Sender: TObject); begin GetAssociatedIconEx('Test.ccd, Icon.Picture.Icon); end; |
Re: Dateitypen und deren Icon auslesen (Problem)
Delphi-Quellcode:
Versuche es mal mit CoInitialize, dann geht es bei mir wenn man die unit ActiveX mit einbindet.
uses
ActiveX; ... 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_ICON or SHGFI_USEFILEATTRIBUTES) <> 0) then try Icon.Handle := CopyIcon(SHFileInfo.hIcon); finally DestroyIcon(SHFileInfo.hIcon); end; end; procedure TExtMan_form.FlatButton2Click(Sender: TObject); begin GetAssociatedIconEx('Test.ccd', Icon.Picture.Icon); end; ... initialization CoInitialize(nil); finalization CoUnInitialize; end. |
Re: Dateitypen und deren Icon auslesen (Problem)
Jo so geht es tatsächlich!
WAS ist daran nun soo viel besser? Was passiert da nun? Danke erstmal. So wie verhält es sich mit dem Ändern des Icons? Das geschieht dann auf normalen Wege? DefaulIcon Eintrag in der Registry? |
Alle Zeitangaben in WEZ +1. Es ist jetzt 06:21 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