Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
Разработка программного обеспечения
KANSoftWare

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

Delphi , Файловая система , Ярлыки

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

Автор: i-s-v
WEB-сайт: http://isv.iatp.org.ua

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;

Here's the translation of the text into Russian:

Функция Delphi под именем NameFromLink принимает в качестве входного параметра ссылку на файл (lnk) и возвращает имя файла, связанное с ней. Функция использует объекты COM для взаимодействия с оболочкой Windows.

Вот разбивка кода:

  1. Создается объект COM типа IShellLink с помощью функции CreateComObject.
  2. Объект CAST-ится в оба IShellLink и IPersistFile, что позволяет доступ к пути файла и загрузке ссылки в память.
  3. Если ссылка успешно загружена, функция использует метод GetPath объекта IShellLink для получения пути файла, связанного с ссылкой.
  4. Функция затем конвертирует путь в строку Delphi с помощью конструктора строки.

Код также включает обработку ошибок с помощью блока try...except. Если возникает ошибка при загрузке или доступе к ссылке, функция выйдет без возвращения результата.

Чтобы использовать эту функцию, вам нужно передать в нее ссылку на файл в виде широкой строки (например, URI или путь к файлу), и она вернет имя файла, связанное с ней.

Например:

var
  link: WideString = 'C:\Path\To\File.txt';
begin
  writeln(NameFromLink(link)); // Вывод: "File.txt"
end.

Обратите внимание, что этот код использует типы и функции, специфические для Windows, поэтому он может не быть переносимым на другие платформы. Кроме того, константа CLSID_ShellLink является специфической для Windows XP и более поздних версий.

Альтернативное решение - использовать функцию ExtractFileName из библиотеки Delphi system для извлечения имени файла из пути:

function GetFileFromPath(path: string): string;
begin
  Result := ExtractFileName(path);
end;

Функция более проста и не требует объектов COM или кода, специфического для Windows. Однако она может не работать для ссылок, которые не указывают на локальный файл (например, сетевые共享ы или URL).

В статье приведен пример программирования на Delphi для извлечения имени файла из ярлыка.


Комментарии и вопросы


Ваше мнение или вопрос к статье в виде простого текста (Tag <a href=... Disabled). Все комментарии модерируются, модератор оставляет за собой право удалить непонравившейся ему комментарий.

заголовок

e-mail

Ваше имя

Сообщение

Введите код




Материалы статей собраны из открытых источников, владелец сайта не претендует на авторство. Там где авторство установить не удалось, материал подаётся без имени автора. В случае если Вы считаете, что Ваши права нарушены, пожалуйста, свяжитесь с владельцем сайта.



:: Главная :: Ярлыки ::


реклама



©KANSoftWare (разработка программного обеспечения, создание программ, создание интерактивных сайтов), 2007
Top.Mail.Ru Rambler's Top100

Время компиляции файла: 2024-05-19 17:53:24
2024-05-20 00:16:01/0.0034670829772949/2