Конференция "WinAPI" » Извлечение объекта из lnk-файла [D7, WinXP]
 
  • webpauk © (30.10.09 15:32) [0]
    Как извлечь имя файла (объект) на который ссылается lnk-файл?
  • Leonid Troyanovsky © (30.10.09 16:26) [1]

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

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

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

    --
    Regards, LVT.
  • webpauk © (30.10.09 16:42) [2]
    предположим, ярлык удалили. но объект то остался?
    вот для чего нужен именно объект, на который ссылается lnk
  • webpauk © (30.10.09 17:02) [3]
    нашел


    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;

  • Anatoly Podgoretsky © (30.10.09 20:05) [4]
    > webpauk  (30.10.2009 16:42:02)  [2]

    Смешно, ярлык удалили, но из него надо изъять информацию.
 
Конференция "WinAPI" » Извлечение объекта из lnk-файла [D7, WinXP]
Есть новые Нет новых   [134431   +15][b:0][p:0.001]