如何创建快捷方式并添加到开始菜单、桌面、任务栏....
2017-07-14 15:56
246 查看
创建快捷方式的方法(.lnk)
::CoInitialize(NULL);
IShellLink* pIShellLink;
HRESULT hRes = ::CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&pIShellLink);
if (!SUCCEEDED(hRes)) {
return false;
}
pIShellLink->SetPath(L"x:\\xx\\xx.exe");
pIShellLink->SetDescription(L"这是一个测试的桌面快捷方式");
pIShellLink->SetHotkey(MAKEWORD('R', HOTKEYF_SHIFT | HOTKEYF_CONTROL));
IPersistFile* pIPersistFile;
hRes = pIShellLink->QueryInterface(IID_IPersistFile, (void**)&pIPersistFile);
if (!SUCCEEDED(hRes)) {
return false;
}
hRes = pIPersistFile->Save(savePath.c_str(), TRUE);
if (!SUCCEEDED(hRes)) {
return false;
}
pIPersistFile->Release();
pIShellLink->Release();
::CoUninitialize();
快捷方式(.url)
if (m_sIconFile.length() == 0)
{
return false;
}
IniFile iniFs;
iniFs.setFilename(m_sLnkFile.c_str());
std::string curUrl = iniFs.getStr("InternetShortcut", "URL");
if (curUrl == m_url)
{//一样,则不用重写
return true;
}
std::string str;
str += "[{000214A0-0000-0000-C000-000000000046}]\r\n";
str += "Prop3=19,2\r\n";
str += "[InternetShortcut]\r\n";
str += "URL=";
str += m_url;
str += "\r\n";
str += "IDList=\r\n";
str += "IconFile=";
str += m_sIconFile;
str += "\r\n";
str += "IconIndex=0\r\n";
// 设置文件为正常方式
DWORD dwAttribute = FILE_ATTRIBUTE_NORMAL;
SetFileAttributesA(m_sLnkFile.c_str() , dwAttribute);
FILE* fp = fopen(m_sLnkFile.c_str(), "wb");
fwrite(str.c_str(), str.length(), 1, fp);
fclose(fp);
添加到开始菜单、桌面只需要将快捷方式存储到相应位置就行
任务栏则需要调用ShellExecute(NULL, L"taskbarpin", lnkPath, NULL, NULL, 0);
::CoInitialize(NULL);
IShellLink* pIShellLink;
HRESULT hRes = ::CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&pIShellLink);
if (!SUCCEEDED(hRes)) {
return false;
}
pIShellLink->SetPath(L"x:\\xx\\xx.exe");
pIShellLink->SetDescription(L"这是一个测试的桌面快捷方式");
pIShellLink->SetHotkey(MAKEWORD('R', HOTKEYF_SHIFT | HOTKEYF_CONTROL));
IPersistFile* pIPersistFile;
hRes = pIShellLink->QueryInterface(IID_IPersistFile, (void**)&pIPersistFile);
if (!SUCCEEDED(hRes)) {
return false;
}
hRes = pIPersistFile->Save(savePath.c_str(), TRUE);
if (!SUCCEEDED(hRes)) {
return false;
}
pIPersistFile->Release();
pIShellLink->Release();
::CoUninitialize();
快捷方式(.url)
if (m_sIconFile.length() == 0)
{
return false;
}
IniFile iniFs;
iniFs.setFilename(m_sLnkFile.c_str());
std::string curUrl = iniFs.getStr("InternetShortcut", "URL");
if (curUrl == m_url)
{//一样,则不用重写
return true;
}
std::string str;
str += "[{000214A0-0000-0000-C000-000000000046}]\r\n";
str += "Prop3=19,2\r\n";
str += "[InternetShortcut]\r\n";
str += "URL=";
str += m_url;
str += "\r\n";
str += "IDList=\r\n";
str += "IconFile=";
str += m_sIconFile;
str += "\r\n";
str += "IconIndex=0\r\n";
// 设置文件为正常方式
DWORD dwAttribute = FILE_ATTRIBUTE_NORMAL;
SetFileAttributesA(m_sLnkFile.c_str() , dwAttribute);
FILE* fp = fopen(m_sLnkFile.c_str(), "wb");
fwrite(str.c_str(), str.length(), 1, fp);
fclose(fp);
添加到开始菜单、桌面只需要将快捷方式存储到相应位置就行
任务栏则需要调用ShellExecute(NULL, L"taskbarpin", lnkPath, NULL, NULL, 0);
相关文章推荐
- 创建快捷方式 (并添加到快速启动栏 、桌面、开始菜单)
- 创建快捷方式到桌面、任务栏、开始菜单、快速启动栏、程序组中
- 如何在桌面或者开始菜单中创建快捷方式
- 如何在桌面或者开始菜单中创建快捷方式
- 如何在Linux的桌面上创建快捷方式或启动器
- 如何在Linux的桌面上创建快捷方式或启动器
- Android应用添加(创建)和删除及判断是否存在桌面快捷方式
- 添加(创建)和删除及判断是否存在桌面快捷方式
- Android应用开发之(如何自动在桌面创建快捷方式)
- 【原】给ClickOnce技术添加创建桌面快捷方式
- NSIS制作卸载器时注意事项和如何创建桌面快捷方式
- Android应用添加(创建)和删除及判断是否存在桌面快捷方式
- Android添加(创建)、删除及判断是否存在桌面快捷方式的方法
- 如何创建桌面快捷方式?windowsXP创建快捷方式方法介绍
- 如何创建桌面快捷方式
- 一分钟学会创建开始菜单程序组和桌面快捷方式
- 如何在Win10开始菜单中添加应用快捷方式?
- 关于如何添加桌面快捷方式
- XP中如何在任务栏处添加快速启动项、任务栏无法添加快捷方式
- Win8如何在桌面创建快捷方式(3种简单的方式)