Top.Mail.Ru
Мастера DELPHI, Delphi programming community Титульная страница Поиск, карта сайта Написать письмо 
| Новости | Поиск | FAQ | Статьи | Книги | Новости VCL |
| Форумы ЧАТ | Орешник | KOL и MCK |
Форумы -» Основная («Начинающим»)/ Базы / WinAPI / Компоненты / Сети / Media / Игры / Corba и COM / KOL / FreePascal / .Net / Прочее / RSDN.ORG

« предыдущая ветвь | форум | следующая ветвь »

Извлечение объекта из lnk-файла [D7, WinXP]


webpauk ©   (2009-10-30 15:32:00) 

Как извлечь имя файла (объект) на который ссылается lnk-файл?


Anatoly Podgoretsky   (2009-10-30 20:05:00) [1]

> webpauk  (30.10.2009 16:42:02)  [2]

Смешно, ярлык удалили, но из него надо изъять информацию.


webpauk   (2009-10-30 17:02:00) [2]

нашел


uses
 ShlObj, ActiveX;

function GetTarget(const LinkFileName: String; out Str:String): Boolean;
var
 psl: IShellLink;
 ppf: IPersistFile;
 WidePath: Array[0..260] of WideChar;
 Info: Array[0..MAX_PATH] of Char;
 wfs: TWin32FindData;
begin
Result:=false;
if UpperCase(ExtractFileExt(LinkFileName)) <> '.LNK' Then
begin
  Str:='NOT a shortuct by extension!';
  Exit;
end;

CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IShellLink, psl);
if psl.QueryInterface(IPersistFile, ppf) = 0 then
begin
  MultiByteToWideChar(CP_ACP, MB_PRECOMPOSED, PChar(LinkFileName), -1, @WidePath, MAX_PATH);
  ppf.Load(WidePath, STGM_READ);
  psl.GetPath(@info, MAX_PATH, wfs, SLGP_UNCPRIORITY);
  Str := info;
  Result:=True;
end
else Str := '';
end;


webpauk   (2009-10-30 16:42:00) [3]

предположим, ярлык удалили. но объект то остался?
вот для чего нужен именно объект, на который ссылается lnk


Leonid Troyanovsky   (2009-10-30 16:26:00) [4]


> webpauk ©   (30.10.09 15:32)
 
> Как извлечь имя файла (объект) на который ссылается lnk-
> файл?

А имя зачем потребовалось? Я к чему, если запустить,
то можно примерно так:
http://groups.google.com/group/fido7.ru.delphi/msg/83a2491e6033dfcd

Ну, а имя файла можно в свойствах IShellFolder, ЕМНИП, поискать.

--
Regards, LVT.


Наверх

Титульная страница Поиск, карта сайта Написать письмо