谢谢了!!!

解决方案 »

  1.   

    例子:
    procedure TForm1.but_GetShotCutClick(Sender: TObject);
    var
    sLink: IShellLink;
    PersFile: IPersistFile;
    Path2Icon, Path2Link: String;
    FndData: TWin32FindData;
    FBuf : array[0..1024] of Char;
    IconNum: Integer;
    const
    IID_IPersistFile: TGUID = (D1:$0000010B;D2:$0000;D3:$0000;D4:($C0,$00,$00,$00,$00,$00,$00,$46));
    begin
    Path2Link := 'C:\Stuff\Web.lnk';
    CoInitialize(nil);
    try
     if CoCreateInstance(CLSID_ShellLink, nil,
       CLSCTX_INPROC_SERVER, IID_IShellLinkA, sLink) = S_OK then
       begin
       if sLink.QueryInterface(IID_IPersistFile,PersFile) = S_OK then
         begin
         if PersFile.Load(StringToOLEStr(Path2Link),0) = S_OK then
           begin
           if sLink.GetPath(@FBuf,1024,FndData,SLGP_UNCPRIORITY) <> NOERROR then
             begin
             ShowMessage('Could not get Shortcut path');
             Exit;
             end;;
           Path2Link := FBuf;
           Label2.Caption := Path2Link;
           if (sLink.GetIconLocation(@FBuf, 1024, IconNum) <> NOERROR) or (FBuf[0] = #0) then
             begin
             Path2Icon := Path2Link;
             IconNum := 0;
             end else
             Path2Icon := FBuf;
           Label3.Caption := Path2Icon+' IconNum '+IntToStr(IconNum);
           end else
           ShowMessage('Path to the Shortcut is incorrect, No Shortcut there');
         end;
       end;
     finally
     CoUninitialize;
     end;
    end;
      

  2.   

    给你一个函数:
    function GetShortcutTarget(ShortcutFilename: string): string;
    var
        Psl: IShellLink;
        Ppf: IPersistFile;
        WideName: array[0..MAX_PATH] of WideChar;
        pResult: array[0..MAX_PATH - 1] of Char;
        Data: TWin32FindData;
        k:word;
        i:integer;
    const    IID_IPersistFile: TGUID = (
            D1: $0000010B; D2: $0000; D3: $0000; D4: ($C0, $00, $00, $00, $00, $00, $00, $46));
    begin    CoCreateInstance(CLSID_ShellLink, nil, CLSCTX_INPROC_SERVER, IID_IShellLinkA, psl);    psl.QueryInterface(IID_IPersistFile, ppf);    MultiByteToWideChar(CP_ACP, 0, pChar(ShortcutFilename), -1, WideName, Max_Path);    ppf.Load(WideName, STGM_READ);    psl.Resolve(0, SLR_ANY_MATCH);    psl.GetPath(@pResult, MAX_PATH, Data, SLGP_UNCPRIORITY);//对应文件
        Result := StrPas(@pResult);
        psl.GetWorkingDirectory(@pResult, MAX_PATH);
        showmessage('路径'+pResult);
        psl.GetHotkey(k);
        showmessage('hotkey:'+Floattostr(k));
        psl.GetArguments(@pResult, MAX_PATH);
        showmessage('参数:'+pResult);
        psl.GetShowCmd(i);
        showmessage('State:'+Floattostr(i));
        psl.GetIconLocation(@pResult, MAX_PATH,i);
        showmessage('icon:'+pResult);
    end;
      

  3.   

    sLink: IShellLink;
    PersFile: IPersistFile;
    如何声明呢??/