Wie kann ich einer Verknüpfung (*.lnk) die Informationen zur eigentlichen Datei entnehmen?


Dieses Beispiel von Oliver Stoer demonstriert den Einsatz der IShellLink Struktur:

uses ComObj, ActiveX und ShlObj

procedure ShowTarget(LinkFile : WideString);
var IU : IUnknown;
    SL : IShellLink;
    PF : IPersistFile;
    FindDate : TWin32FindData;
    TargetFile : array[0..MAX_PATH] of char;
begin
// Herstellen des IShellLink und IPersistFile zum Zugriff auf die .LNK Datei. }
  IU := CreateComObject(CLSID_ShellLink);
  SL := IU as IShellLink;
  PF := SL as IPersistFile;
// .LNK Datei in IPersistFile Objekt laden.
  PF.Load(PWideChar(LinkFile), STGM_READ);
// Den Link durch Aufruf der Resolve-Methode auflösen
  SL.Resolve(0, SLR_ANY_MATCH or SLR_NO_UI);
// Jetzt kommt man an die Infos
  SL.GetPath(TargetFile, MAX_PATH, FindDate, SLGP_UNCPRIORITY);
// Zieldatei ausgeben
  ShowMessage(TargetFile);
end;
Delphi 1 Delphi 2 Delphi 3 Delphi 4
nicht getestet Version nicht betroffen getestet

siehe auch:


Delphi FAQ