• 欢迎访问奇跡の海网站,本站不上传任何资源,所有资源均来自于网络,欢迎加入奇跡の海~!奇跡の海-WordPress QQ群
  • 本站下载资源为网络上收集整理而来,并且以计算机技术研究交流为目的,版权归原作者所有,仅供大家参考,学习,不存在任何商业目的与商业用途.
  • 本站系统镜像均来自于官方原版,ed2k可视为P2P下载链接。所有操作系统默认均为试用版,如有正版密钥可以有效激活,本站不提供任何激活和相关服务。

通过LNK文件(快捷方式)解析出目标文件的路径

其他优化 奇跡の海 2年前 (2017-02-18) 429次浏览 已收录 0个评论 扫描二维码

引用头:

#include <shlobj.h>

关键引用的类IShellLink:
IShellLink主要方法:
1、GetArguments:获得参数信息
2、GetDescription:获得描述信息
3、GetHotkey:获得快捷键
4、GetIconLocation:获得快捷方式图标
5、GetIDList:获得快捷方式的目标对象的item identifier list (Windows外壳中的每个对象如文件,目录和打印机等都有唯一的item identifiler list)
6、GetPath: 获得快捷方式的目标文件或目录的全路径
7、GetShowCmd:获得快捷方式的运行方式,比如常规窗口,最大化
8、GetWorkingDirectory:获得工作目录
9、Resolve:按照一定的搜索规则试图获得目标对象,即使目标对象已经被删除或移动,重命名

解析的处理流程:
1、初始化COM接口
2、创建IShellLink对象
3、从IShellLink对象中获取IPersistFile对象接口
4、操作IShellLink对象
5、释放IPersistFile对象接口
6、释放IShellLink对象
7、释放COM接口

//参数1:Lnk文件路径,参数2:返回存放目标路径  
  
bool GetShellPath(Char *Src,Char *ShellPath)  
  
{  
  
      bool blret=false;  
  
      ::CoInitialize(NULL); //初始化COM接口  
  
      IShellLink *psl = NULL;  
  
      //创建COM接口,IShellLink对象创建  
  
      HRESULT hr = CoCreateInstance(CLSID_ShellLink, NULL,CLSCTX_INPROC_SERVER,IID_IShellLink, (LPVOID *)&psl);  
  
      if (SUCCEEDED(hr))  
  
      {  
  
          IPersistFile *ppf ;  
          hr=psl->QueryInterface(IID_IPersistFile, (LPVOID*)&ppf);  
  
          if (SUCCEEDED(hr))  
  
         {  
  
             WCHAR wsz[MAX_PATH] ;  
  
             MultiByteToWideChar( CP_ACP, 0, Src, -1, wsz, MAX_PATH ) ;    //转下宽字节  
  
             hr=ppf->Load(wsz, STGM_READ);    //加载文件  
  
             if (SUCCEEDED(hr))  
             {  
  
                     WIN32_FIND_DATA wfd ;  
  
                     psl->GetPath(ShellPath,MAX_PATH, (WIN32_FIND_DATA*)&wfd,SLGP_SHORTPATH);  //获取目标路径  
  
                     blret=true;  
  
             }  
  
             ppf->Release();   
  
         }  
  
         psl->Release();  //释放对象  
  
       }  
  
       ::CoUninitialize();   //释放COM接口  
  
  
       return blret;  
  
}  

版权声明:本站所有文章和资源使用CC BY-NC-SA 4.0协议授权发布 , 转载应当以相同方式注明文章来自“SeaOMC.COM->通过LNK文件(快捷方式)解析出目标文件的路径!在下边可以分享本文哦!
喜欢 (0)
[]
分享 (0)
奇跡の海
关于作者:
一个WordPress菜鸟!
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址