bool create_link_file(const TCHAR* exe_path, // 快捷方式对应的程序
const TCHAR *work_dir, //工作目录
const TCHAR* argvs, //启动参数
const WCHAR* link_name, // 快捷方式名称
const TCHAR* icon) // 快捷方式的图标
{
bool result = false;
IShellLink* shell_link = NULL;
HRESULT hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&shell_link);
if (SUCCEEDED(hr))
{
// 设置程序路径
hr = shell_link->SetPath(exe_path);
// 设置工作目录
hr = shell_link->SetWorkingDirectory(work_dir);
// 设置参数
hr = shell_link->SetArguments(argvs);
// 设置图标
hr = shell_link->SetIconLocation(icon, 0);
IPersistFile* persist_file = NULL;
hr = shell_link->QueryInterface(IID_IPersistFile, (void**)&persist_file);
if (SUCCEEDED(hr))
{
// 创建快捷方式
wchar_t szStartPath[MAX_PATH] = { 0 };
SHGetSpecialFolderPathW(NULL, szStartPath, CSIDL_DESKTOPDIRECTORY, 0);
_snwprintf_s(szStartPath, MAX_PATH, L"%s\\%s", szStartPath, link_name);
hr = persist_file->Save((&szStartPath[0]), FALSE);
if (SUCCEEDED(hr))
{
result = true;
//LOG_INFO(_T("create_link_file ok"));
}
else
{
//LOG_ERROR(_T("IPersistFile Save failed"));
}
persist_file->Release();
}
shell_link->Release();
}
else
{
//LOG_ERROR(_T("CoCreateInstance failed"));
}
return result;
}