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

//得到快速启动栏的路径    
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,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;
}

相关文章

用的openwrt路由器,家里宽带申请了动态公网ip,为了方便把2...
#!/bin/bashcommand1&command2&wait从Shell脚本并行...
1.先查出MAMP下面集成的PHP版本cd/Applications/MAMP/bin/ph...
1、先输入locale-a,查看一下现在已安装的语言2、若不存在如...
BashPerlTclsyntaxdiff1.进制数表示Languagebinaryoctalhexa...
正常安装了k8s后,使用kubect工具后接的命令不能直接tab补全...