首页
社区
课程
招聘
[求助]取快捷方式时信息时, 图标文件名取不出
发表于: 2009-5-2 02:30 3647

[求助]取快捷方式时信息时, 图标文件名取不出

2009-5-2 02:30
3647
type
  MyLINK_FILE_INFO = record
    TargetFileName : array[0..MAX_PATH] of char;               //目标文件名
    //WorkDirectory : array[0..MAX_PATH] of char;           //工作目录或者起始目录
    IconLocation : array[0..MAX_PATH] of char;            //图标文件名
    IconIndex : integer;                                 //图标索引
    Arguments : array[0..MAX_PATH] of char;              //程序运行的参数
    //Description:array[0..CCH_MAXNAME] of char;        //快捷方式的描述
    //ItemIDList:PItemIDList;                            //只供读取使用
    //RelativePath:array[0..255] of char;                    //相对目录,只能设置
    //ShowState:integer;                                //运行时的窗口状态
    //HotKey:word;                                    //快捷键
  end;

function GetShortcutTarget(const LinkFileName : String; var My_LINK_FILE_INFO : MyLINK_FILE_INFO) : Boolean;  //获得快捷方式指向的目标
var
  ShellLink : IShellLink;
  Buffer:   PWideChar;
  Win32FindData:   WIN32_FIND_DATA;
  HResu:   HResult;
  PersistFile:   IPersistFile;
begin
  Result:=False;
  GetMem(Buffer,   MAX_PATH);
  if not Succeeded(CoInitialize(nil)) then Exit;
  if not Succeeded(coCreateInstance(CLSID_SHELLLINK, nil, CLSCTX_INPROC_SERVER, IID_IShellLinkA, ShellLink)) then Exit;

  HResu := ShellLink.QueryInterface(iPersistFile,   PersistFile);

  if not Succeeded(HResu) then Exit;

  HResu := PersistFile.Load(StringToWideChar(LinkFileName, Buffer, MAX_PATH),   STGM_READ);
  if not Succeeded(HResu) then Exit;

  HResu   :=   ShellLink.Resolve(0,   SLR_NO_UI);
  //if   Succeeded(HResu)

  //psl.Resolve(Form_GameMenuSet.Handle, SLR_ANY_MATCH);   // 按照一定的搜索规则试图获得目标对象,即使目标对象已经被删除或移动,重命名   

    with My_LINK_FILE_INFO, ShellLink do
    begin
    GetPath(TargetFileName, MAX_PATH, Win32FindData, SLGP_UNCPRIORITY);
    HResu:=GetIconLocation(IconLocation, MAX_PATH, IconIndex);
    // 当指向的路径(TargetFileName) 有空格时, 这里为空!!!!
      //if not Succeeded(HResu) then
    GetArguments(Arguments, MAX_PATH);
    end;
  FreeMem(Buffer);
  Result:=True;
end;

[注意]传递专业知识、拓宽行业人脉——看雪讲师团队等你加入!

收藏
免费 0
支持
分享
最新回复 (1)
雪    币: 1205
活跃值: (5094)
能力值: ( LV3,RANK:20 )
在线值:
发帖
回帖
粉丝
2
顶起!!!!!!!!
2009-5-3 15:17
0
游客
登录 | 注册 方可回帖
返回
//