![]() |
Icon/Text zu Dateierweiterung auslesen
Hi,
ich möchte zu jeder beliebigen Datei die Beschreibung, welche im Explorer bei "Typ" steht auslesen. Wie geht das ? |
Re: Text zu Dateierweiterung auslesen
Hi,
![]() |
Re: Text zu Dateierweiterung auslesen
Gute Idee, also so ?
Delphi-Quellcode:
function GetIcon(Extension : String): Boolean;
var Reg: TRegistry; begin Result := False; if Extension <> '' then begin if Extension[1] <> '.' then Extension := '.' + Extension; Reg := TRegistry.Create; try Reg.RootKey := HKEY_CLASSES_ROOT; if Reg.OpenKey(Extension, True) then if Reg.OpenKey('DefaultIcon', True) then Reg.ReadString('DefaultIcon'); // <-- das ist das Icon finally Reg.Free; end; end; end; |
Re: Text zu Dateierweiterung auslesen
Moin Nils,
damit liest Du den Pfad zum Icon aus. Übrigens gehört zu jedem erfolgreichen OpenKey auch ein CloseKey. Ausserdem solletst Du mit ValueExists erst einmal prüfen, ob der Wert überhaupt da ist. |
Re: Text zu Dateierweiterung auslesen
Ok:
Delphi-Quellcode:
Wie kommt man an das Icon denn ran ? Der Pfad ist nicht so gut, da viele Icons in Programmen stecken.
if ValueExists('DefaultIcon') then
Reg.ReadString('DefaultIcon'); Ich hab den Titel mal geändert, ab jetzt: Icon und Text :mrgreen: Aber Text ist sogar simpel, habe da noch was.... |
Re: Icon/Text zu Dateierweiterung auslesen
Über ExtractAssociatedIcon oder so ähnlich aus der ShellAPI müsste es gehen. Da musst du dir halt eine Datei mit der Endung temporär erzeugen und die Funktion für diese Datei aufrufen.
|
Re: Icon/Text zu Dateierweiterung auslesen
Das mit der Beschreibung ist doch nicht so leicht :( Ich konnte bis jetzt nichts regelmäßiges bei den verschiedenen Dateitypen finden.
Das mit dem Icon wird aber klappen, denke ich. Edit: Mit den Icons gibt es das gleiche Problem.... |
Re: Icon/Text zu Dateierweiterung auslesen
Hallo Nils,
nimm die Funktion SHGetFileInfo aus der Unit ShellAPI:
Delphi-Quellcode:
Ein Aufruf mit
uses
ShellAPI; function GetFileIcon(const FileName: string; const Icon: TIcon; const FileMustExist: Boolean): Boolean; var FI: TSHFileInfo; Attributes: DWORD; Flags: Word; begin if FileMustExist then begin Attributes := 0; Flags := SHGFI_ICON or SHGFI_LARGEICON; end else begin Attributes := FILE_ATTRIBUTE_NORMAL; Flags := SHGFI_USEFILEATTRIBUTES or SHGFI_ICON or SHGFI_LARGEICON; end; if SHGetFileInfo(PChar(FileName), Attributes, FI, SizeOf(FI), Flags) <> 0 then begin Icon.ReleaseHandle; Icon.Handle := FI.hIcon; Result := True; end else Result := False; end;
Delphi-Quellcode:
lädt das große Icon, das Delphi-Quelltexten zugeordnet ist. Im Fehlerfall wird ein
if not GetFileIcon('*.pas', Image1.Picture.Icon, False) then
ShowMessage('Default-Icon geladen'); Default geladen, wenn FileMustExist auf False steht. Steht FileMustExist auf True, wird im Fehlerfall kein Icon geladen. jkr |
Re: Icon/Text zu Dateierweiterung auslesen
Das ist sehr gut, danke :) Dann bleibt immernoch das Problem mit der Dateitypbeschreibung.
|
Re: Icon/Text zu Dateierweiterung auslesen
Guckst du mal ins ListView-Sample von Luckies Win32-Tutorials. Steht da drin.
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 09:29 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