Как узнать имя файла из ярлыка



Автор: i-s-v

function NameFromLink(const lnk: string): string;
var
  MyObject: IUnknown;
  MySLink: IShellLink;
  MyPFile: IPersistFile;
  c: PChar;
  pfd: _WIN32_FIND_DATAA;
begin
  Result := '';
  try
    MyObject := CreateComObject(CLSID_ShellLink);
    MySLink := MyObject as IShellLink;
    MyPFile := MyObject as IPersistFile;
    if MyPFile.Load(Pointer(WideString(lnk)), OF_READ) <> S_OK then
      exit;
    c := PChar(lnk);
    MySLink.GetPath(c, MAX_PATH, pfd, 0);
    Result := string(c);
  except
  end;
end;