首页 > 代码库 > VC怎么从快捷方式获取目标文件路径

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;}

 

VC怎么从快捷方式获取目标文件路径