Home » Tipps & Tricks » Dateien/Verzeichnisse » Dateieigenschaften » Anwendung ermitteln, die mit einer Dateiendung verknüpft ist

Anwendung ermitteln, die mit einer Dateiendung verknüpft ist

Dateien sind unter Windows meistens mit einer Anwendung verknüpft, so z. B. doc mit Word. Um herauszufinden, mit welcher Anwendung eine Endung verknüpft ist, kann folgende Funktion verwendet werden:

uses Registry;

function GetProgramAssociation(const Ext: string): string;
var reg: TRegistry;
  s: string;
begin
  s:='';
  reg:=TRegistry.Create;
  try
    reg.RootKey:=HKEY_CLASSES_ROOT;
    if reg.OpenKey('.'+ext+'shellopencommand', false) then
    begin
      s:=reg.ReadString('');
      reg.CloseKey;
    end
    else
    begin
      if reg.OpenKey('.'+ext, false) then
      begin
        s:=reg.ReadString('');
        reg.CloseKey;
        if s'' then
        begin
          if reg.OpenKey(s+'shellopencommand', false) then
            s:=reg.ReadString('');
          reg.CloseKey;
        end;
      end;
    end;
    if Pos('%', s) > 0 then Delete(s, Pos('%', s), length(s));
    if ((length(s)>0) and (s[1]='"')) then Delete (s, 1, 1);
    if ((length(s)>0) and (s[length(s)]='"')) then Delete(s, Length(s), 1);
    while ((length(s)>0) and ((s[length(s)]=#32) or (s[length(s)]='"'))) do
      Delete(s, Length(s), 1);
    result:=s;
  finally
  reg.Free;
  end;
end;

Aufrufbeispiel:

procedure TForm1.Button1Click(Sender: TObject);
begin
  ShowMessage(GetProgramAssociation('gif'));
end;