Карта сайта Kansoftware
НОВОСТИУСЛУГИРЕШЕНИЯКОНТАКТЫ
KANSoftWare

Получение имени файла из его ярлыка

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



Автор: VID
WEB-сайт: http://delphibase.endimus.com

{ **** UBPFD *********** by delphibase.endimus.com ****
>> 
В параметре LinkFileName необходимо указать полное имя файлы-ярлыка.
Функция возвратит полное имя файла, на который ссылается рассматриваемый ярлык

Зависимости: ComObj, SysUtils, Windows, ActiveX, System, ShlObj
Автор:       VID, vidsnap@mail.ru, ICQ:132234868, Махачкала
Copyright:   некий FAQ... не помню какой
Дата:        27 апреля 2002 г.
***************************************************** }

function GetFileNamefromLink(LinkFileName: string): string;
var
  MyObject: IUnknown;
  MySLink: IShellLink;
  MyPFile: IPersistFile;
  FileInfo: TWin32FINDDATA;
  WidePath: array[0..MAX_PATH] of WideChar;
  Buff: array[0..MAX_PATH] of Char;
begin
  Result := '';
  if (fileexists(Linkfilename) = false) then
    exit;
  MyObject := CreateComObject(CLSID_ShellLink);
  MyPFile := MyObject as IPersistFile;
  MySLink := MyObject as IShellLink;
  StringToWideChar(LinkFileName, WidePath, SizeOf(WidePath));
  MyPFile.Load(WidePath, STGM_READ);
  MySLink.GetPath(Buff, Max_PATH, FileInfo, SLGP_UNCPRIORITY);
  Result := buff;
end;

Программный функционал Delphi для извлечения имени файла из ярлыка!

Код структурирован и легко понятен. Он использует объекты COM для взаимодействия с компонентом Windows Shell Link.

Вот шаг за шагом, что код делает:

  1. Функция GetFileNamefromLink принимает строковый параметр LinkFileName, который должен быть полным путем к файлу ярлыка.
  2. Он проверяет, существует ли файл с помощью функции FileExists из модуля SysUtils. Если файла не существует, функция сразу же выходит из себя.
  3. Создается объект COM типа IShellLink с помощью функции CreateComObject из модуля ComObj.
  4. Интерфейс IPersistFile используется для загрузки данных ярлыка из файла, указанного в LinkFileName. Это загружает данные ярлыка в память.
  5. Интерфейс IShellLink используется для получения пути целевого файла (т.е., файла, на который ссылается ярлык). Путь хранится в массиве символов (Buff) и структуре TWin32FINDDATA (FileInfo).
  6. Наконец, функция возвращает путь целевого файла в виде строки.

Код использует некоторые константы из Windows API:

  • STGM_READ: указывает, что файл должен быть прочитан для загрузки.
  • SLGP_UNCPRIORITY: указывает, что путь не должен быть преобразован в формат UNC (например, \\server\share\file.txt вместо C:\path\to\file.txt).

Функция использует некоторые типы и переменные, специфические для Delphi:

  • TWin32FINDDATA: рекордный тип, используемый Windows API для хранения информации о файле.
  • WidePath: массив широких символов (16-разрядного Юникода), используемый для хранения пути файла ярлыка.
  • Buff: массив символов (8-битного ANSI), используемый для хранения пути целевого файла.

В целом, эта функция является хорошим примером использования объектов COM и функций Windows API в Delphi для взаимодействия с ярлыками.

Представлен функцией GetFileNamefromLink, которая получает имя файла из его ярлыка, указанного в параметре LinkFileName.


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

Получайте свежие новости и обновления по Object Pascal, Delphi и Lazarus прямо в свой смартфон. Подпишитесь на наш Telegram-канал delphi_kansoftware и будьте в курсе последних тенденций в разработке под Linux, Windows, Android и iOS




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


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


реклама


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

Время компиляции файла: 2024-12-22 20:14:06
2025-06-16 21:15:05/0.0035529136657715/0