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;
    }
  • 相关阅读:
    SpringMVC 下载本地文件
    Spring MVC 自定义转换器
    Struts,Hibernate,Spring经典面试题
    SpingMVC 执行的流程
    SpringMVC 应用配置
    SpringMVC特点
    Struts2学习
    mysql免安装配置
    mysql免安装版设置密码
    《金色梦乡》金句摘抄(六)
  • 原文地址:https://www.cnblogs.com/Lthis/p/4243812.html
Copyright © 2011-2022 走看看