zoukankan      html  css  js  c++  java
  • VC怎么从快捷方式获取目标文件路径

    #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] = {0};
                 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;
    }
  • 相关阅读:
    搭建maven web项目
    Promise封装AJAX
    迭代器Iterator
    ...扩展运算符
    解构赋值和模板字符串(反引号 ` `)
    记录一下let,const,var的区别
    重拾旧笔,好久不见
    SQL 中实现递归(根据子节点查找父节点)
    SQL 利用case when 动态给SQL添加条件查询语句
    关于webapi练习过程中遇到的一系列问题记录
  • 原文地址:https://www.cnblogs.com/Lthis/p/4243812.html
Copyright © 2011-2022 走看看