vs2013 MFC生成文件和文件夹的快捷方式

来源:互联网 发布:windows defender开启 编辑:程序博客网 时间:2024/05/18 00:07

    没有封装成函数

文件:

//快捷方式保存路径char PathLink[]="D:/a file.lnk";CoInitialize(NULL);HRESULT hres;IShellLink* psl;// Get a pointer to the IShellLink interface.  hres = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,IID_IShellLink, (LPVOID*)&psl);if (SUCCEEDED(hres)){IPersistFile* ppf;//设置快捷方式的目标路径,添加描述  psl->SetPath(_T("D:/Mosaic2.jpg"));//描述:就是备注psl->SetDescription(_T("link of file"));//生成快捷方式hres = psl->QueryInterface(IID_IPersistFile, (LPVOID*)&ppf);if (SUCCEEDED(hres)){WCHAR wsz[MAX_PATH];// Ensure that the string is Unicode.  MultiByteToWideChar(CP_ACP, 0, PathLink, -1, wsz, MAX_PATH);// TODO: Check return value from MultiByteWideChar to ensure  // Save the link by calling IPersistFile::Save.  hres = ppf->Save(wsz, TRUE);ppf->Release();}psl->Release();}CoUninitialize();

效果图:(这里生成的是一张图片的快捷方式)


文件夹:(可以自己设置返回BOOL值)

CString strName("www");//快捷方式名称CString path;//快捷方式目标路径path.Format(_T("D:\\www"));if (FAILED(CoInitialize(NULL))){return ;}int i = CSIDL_DESKTOPDIRECTORY;//用于获取系统默认路径TCHAR Path[MAX_PATH + 1];CString strDestDir;LPITEMIDLIST pidl;LPMALLOC pShell;if (SUCCEEDED(SHGetMalloc(&pShell))){if (SUCCEEDED(SHGetSpecialFolderLocation(NULL, i, &pidl))){if (!SHGetPathFromIDList(pidl, Path)){pShell->Free(pidl);::CoUninitialize();return ;}pShell->Release();strDestDir.Format(_T("%s"), Path);//保存快捷方式的文件夹strDestDir += "\\";strDestDir += strName;//设置桌面快捷方式的名字strDestDir += ".lnk";//快捷方式的后缀名IShellLink* psl;if (SUCCEEDED(CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (LPVOID*)&psl))){psl->SetPath(path);//设置快捷方式的目标位置//比如目标位置为C:\windows\a.txt 起始位置就应该设置为C:\windows否则会导致不可预料的错误//如果是文件夹的快捷方式起始位置和目标位置可以设置为一样psl->SetWorkingDirectory(path);   //设置快捷方式的起始位置IPersistFile* ppf;if (SUCCEEDED(psl->QueryInterface(IID_IPersistFile, (LPVOID*)&ppf))){if (SUCCEEDED(ppf->Save(strDestDir, TRUE)))//保存快捷方式到桌面{//例子中声明void,这里就不写}}ppf->Release();psl->Release();::CoUninitialize();return ;}}}::CoUninitialize();return ;


效果图:



0 0