Home » Tipps & Tricks » Dateien/Verzeichnisse » Dateiendungen » Zur Dateiendung gehörige Verknüpfung finden

Zur Dateiendung gehörige Verknüpfung finden

Viele Dateiendungen (z.B. *.Doc) sind in Windows mit Programmen verknüpft. Klickt man diese Dateien an, wird das zugehörige Programm gestartet und die Datei geöffnet. Beispielsweise sind Word-Dokumente (*.doc) in der Regel mit Microsoft Word oder Wordpad verknüpft.
Dieser Tipp zeigt, wie man das verknüpfte Programm und dessen Pfad ermitteln kann.

uses
ShellApi;

resourcestring
SFILE_NOT_FOUND    = 'Die angegebene Datei "%s" konnte nicht gefunden werden.';
SNO_ASSOCIATED_EXE = 'Für den angegebenen Dateitypen ist kein ausführbares Programm verfügbar.';
SPATH_NOT_FOUND    = 'Der angegebene Pfad "%s" konnte nicht gefunden werden.';
SEXE_INVALID       = 'Das ausführbare Programm ist keine gültige Win32-Anwendung.';

function GetExecutable(const AFileName: string): string;
var
  FileName, Directory: string;
begin
  FileName := ExtractFileName(AFileName);
  Directory := ExtractFilePath(AFileName);
  Setlength(Result, MAX_PATH);
  FillChar(Pointer(Result)^, Length(Result), #0);
  case FindExecutable(Pointer(FileName), Pointer(Directory), Pointer(Result)) of
    0: OutOfMemoryError;
    31: MessageDlg(SNO_ASSOCIATED_EXE, mtError, [mbOk], 0);
    ERROR_FILE_NOT_FOUND: MessageDlg(Format(SFILE_NOT_FOUND, [FileName]),
                                     mtError, [mbOk], 0);
    ERROR_PATH_NOT_FOUND: MessageDlg(Format(SPATH_NOT_FOUND, [Directory]),
                                     mtError, [mbOk], 0);
    ERROR_BAD_FORMAT: MessageDlg(SEXE_INVALID, mtError, [mbOk], 0);
  end;
  Setlength(Result, StrLen(Pointer(Result)));
end;

Als Parameter muss der vollständige Pfad und Name der Datei übergeben werden, zu dem die Verknüpfung gesucht wird.