创建快捷方式到桌面、任务栏、开始菜单、快速启动栏、程序组中

来源:互联网 发布:matlab asm算法 编辑:程序博客网 时间:2024/05/17 06:15
//得到快速启动栏的路径    BOOL GetIEQuickLaunchPath(WCHAR *pszIEQueickLaunchPath){LPITEMIDLIST  ppidl;if (SHGetSpecialFolderLocation(NULL, CSIDL_APPDATA, &ppidl) == S_OK){BOOL flag = SHGetPathFromIDList(ppidl, pszIEQueickLaunchPath);wcscat(pszIEQueickLaunchPath, L"\\Microsoft\\Internet Explorer\\Quick Launch");CoTaskMemFree(ppidl);return flag;}return FALSE;}//得到 开始->程序组 的路径    BOOL GetProgramsPath(WCHAR *pszProgramsPath){LPITEMIDLIST  ppidl;if (SHGetSpecialFolderLocation(NULL, CSIDL_STARTMENU, &ppidl) == S_OK){BOOL flag = SHGetPathFromIDList(ppidl, pszProgramsPath);CoTaskMemFree(ppidl);return flag;}return FALSE;}//得到当前桌面路径    BOOL GetDesktopPath(WCHAR *pszDesktopPath){LPITEMIDLIST  ppidl = NULL;if (SHGetSpecialFolderLocation(NULL, CSIDL_DESKTOP, &ppidl) == S_OK){BOOL flag = SHGetPathFromIDList(ppidl, pszDesktopPath);CoTaskMemFree(ppidl);return flag;}return FALSE;}bool CreateShortcut(const WCHAR* pszSrcPath){CoInitialize(NULL);bool bRet = false;WCHAR chQuick[MAX_PATH] = { 0 };WCHAR chPrograms[MAX_PATH] = { 0 };WCHAR chDesktop[MAX_PATH] = { 0 };GetDesktopPath(chDesktop);GetIEQuickLaunchPath(chQuick);GetProgramsPath(chPrograms);std::wstring str;str = chQuick;WCHAR szFileTitle[MAX_PATH] = { 0 };::GetFileTitle(pszSrcPath, szFileTitle, MAX_PATH);str += L"//";str += std::wstring(szFileTitle);str += L".lnk";IShellLink* psl;HRESULT hr = CoCreateInstance(CLSID_ShellLink,NULL, CLSCTX_INPROC_SERVER,IID_IShellLink,(LPVOID*)&psl);if (SUCCEEDED(hr)) {IPersistFile* ppf;psl->SetPath(pszSrcPath);psl->SetDescription(L"测试描述");psl->SetShowCmd(SW_SHOW);if (SUCCEEDED(psl->QueryInterface(IID_IPersistFile, (LPVOID *)&ppf))) {if (SUCCEEDED(ppf->Save(str.c_str(), TRUE)))bRet = true;ppf->Release();}psl->Release();}CoUninitialize();::ShellExecute(NULL, TEXT("StartPin"), str.c_str(), NULL, NULL, SW_SHOW);//锁定到开始菜单::ShellExecute(NULL, L"TaskbarPin", str.c_str(), NULL, NULL, SW_SHOW);//锁定到任务栏return bRet;}

阅读全文
0 0
原创粉丝点击