Delphi-PRAXiS
Seite 1 von 2  1 2      

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Sonstige Fragen zu Delphi (https://www.delphipraxis.net/19-sonstige-fragen-zu-delphi/)
-   -   Delphi Icon/Text zu Dateierweiterung auslesen (https://www.delphipraxis.net/99093-icon-text-zu-dateierweiterung-auslesen.html)

Nils_13 6. Sep 2007 17:40


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 ?

Die Muhkuh 6. Sep 2007 17:42

Re: Text zu Dateierweiterung auslesen
 
Hi,

hier wird gezeigt, wie man eine eigene Dateiendung registriert und dabei werden eben diese Daten angegeben. Du musst das ganze nur umdrehen und schon hast Du es ;-)

Nils_13 6. Sep 2007 18:02

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;

Christian Seehase 6. Sep 2007 18:08

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.

Nils_13 6. Sep 2007 18:53

Re: Text zu Dateierweiterung auslesen
 
Ok:
Delphi-Quellcode:
if ValueExists('DefaultIcon') then
  Reg.ReadString('DefaultIcon');
Wie kommt man an das Icon denn ran ? Der Pfad ist nicht so gut, da viele Icons in Programmen stecken.


Ich hab den Titel mal geändert, ab jetzt: Icon und Text :mrgreen: Aber Text ist sogar simpel, habe da noch was....

Zacherl 6. Sep 2007 19:26

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.

Nils_13 6. Sep 2007 19:55

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

jottkaerr 7. Sep 2007 07:18

Re: Icon/Text zu Dateierweiterung auslesen
 
Hallo Nils,

nimm die Funktion SHGetFileInfo aus der Unit ShellAPI:

Delphi-Quellcode:
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;
Ein Aufruf mit

Delphi-Quellcode:
  if not GetFileIcon('*.pas', Image1.Picture.Icon, False) then
    ShowMessage('Default-Icon geladen');
lädt das große Icon, das Delphi-Quelltexten zugeordnet ist. Im Fehlerfall wird ein
Default geladen, wenn FileMustExist auf False steht. Steht FileMustExist auf True,
wird im Fehlerfall kein Icon geladen.

jkr

Nils_13 7. Sep 2007 17:21

Re: Icon/Text zu Dateierweiterung auslesen
 
Das ist sehr gut, danke :) Dann bleibt immernoch das Problem mit der Dateitypbeschreibung.

MathiasSimmack 7. Sep 2007 18:05

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.
Seite 1 von 2  1 2      

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