加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

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

发布时间:2020-12-15 09:12:45 所属栏目:安全 来源:网络整理
导读://得到快速启动栏的路径 BOOL GetIEQuickLaunchPath(WCHAR *pszIEQueickLaunchPath){LPITEMIDLIST ppidl;if (SHGetSpecialFolderLocation(NULL,CSIDL_APPDATA,ppidl) == S_OK){BOOL flag = SHGetPathFromIDList(ppidl,pszIEQueickLaunchPath);wcscat(pszIEQu
//得到快速启动栏的路径    
BOOL GetIEQuickLaunchPath(WCHAR *pszIEQueickLaunchPath)
{
	LPITEMIDLIST  ppidl;

	if (SHGetSpecialFolderLocation(NULL,CSIDL_APPDATA,&ppidl) == S_OK)
	{
		BOOL flag = SHGetPathFromIDList(ppidl,pszIEQueickLaunchPath);
		wcscat(pszIEQueickLaunchPath,L"MicrosoftInternet ExplorerQuick Launch");
		CoTaskMemFree(ppidl);
		return flag;
	}
	return FALSE;
}

//得到 开始->程序组 的路径    
BOOL GetProgramsPath(WCHAR *pszProgramsPath)
{
	LPITEMIDLIST  ppidl;

	if (SHGetSpecialFolderLocation(NULL,CSIDL_STARTMENU,pszProgramsPath);
		CoTaskMemFree(ppidl);
		return flag;
	}
	return FALSE;
}

//得到当前桌面路径    
BOOL GetDesktopPath(WCHAR *pszDesktopPath)
{
	LPITEMIDLIST  ppidl = NULL;

	if (SHGetSpecialFolderLocation(NULL,CSIDL_DESKTOP,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(),SW_SHOW);//锁定到开始菜单
	::ShellExecute(NULL,L"TaskbarPin",SW_SHOW);//锁定到任务栏
	return bRet;
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读