C++ 创建桌面快捷方式 开始菜单的实现代码
void CInstall_ProgressDlg::CreateShortCut(CString csLinkPath, CString csExePath, CString csIconPath)
{
HRESULT hres;
hres = ::CoInitialize(NULL);
if(S_OK == hres)
{
//delete old link
CFileFind cfind;
if(cfind.FindFile(csLinkPath)){
CFile::Remove(csLinkPath);
}IShellLink * pShellLink ;
hres = ::CoCreateInstance( CLSID_ShellLink, NULL,CLSCTX_INPROC_SERVER, IID_IShellLink,(void **)&pShellLink);
if( SUCCEEDED( hres))
{
pShellLink -> SetPath(csExePath);
if(PathFileExists(csIconPath))
pShellLink -> SetIconLocation(csIconPath, 0);
pShellLink -> SetHotkey( MAKEWORD( 'R', HOTKEYF_SHIFT | HOTKEYF_CONTROL));
CString csWorkingDir;
csWorkingDir = csExePath.Left(2);
csWorkingDir.Append(FILE_SEPARATOR);
TRACE_CS(csWorkingDir);
pShellLink -> SetWorkingDirectory(csWorkingDir);IPersistFile *pPersistFile;
hres = pShellLink -> QueryInterface( IID_IPersistFile, (void **)&pPersistFile) ;
if( SUCCEEDED(hres))
{
hres = pPersistFile -> Save(csLinkPath, TRUE);
pPersistFile -> Release();
}
pShellLink -> Release();
}
::CoUninitialize();
}
}
void CInstall_ProgressDlg::CreateStartMenu()
{
TCHAR chStartupFolder[MAX_PATH];
/*
*parm1: hwnd
*parm2: path buffer
*parm3: CSIDL_PROGRAMS 0x0002 / Start Menu\Programs
*parm4: true:if file !exist to create, false:not create
*/
SHGetSpecialFolderPath(this->GetSafeHwnd(), chStartupFolder,CSIDL_PROGRAMS,FALSE);
CString csStartupFolder = chStartupFolder;
csStartupFolder.Append(FILE_SEPARATOR);
csStartupFolder.Append(FOLDER_APP_NAME);
if(!PathFileExists(csStartupFolder)){
g_InstallHelper.CreateInstallFolder(csStartupFolder);
}CString csInstallPath;
csInstallPath = g_InstallInfo.chInstallPath;CString csEXEFilePath;
csEXEFilePath = csInstallPath;
csEXEFilePath.Append(FILE_SEPARATOR);
csEXEFilePath.Append(FILE_APP_NAME);
CString csUnExeFilePath;
csUnExeFilePath = csInstallPath;
csUnExeFilePath.Append(FILE_SEPARATOR);
csUnExeFilePath.Append(FILE_UNINSTALL_NAME);
CString csLinkFileName = csStartupFolder;
csLinkFileName.Append(FILE_SEPARATOR);
csLinkFileName.Append(LINK_NAME);
csLinkFileName.Append(LINK_EXT);
CString csUnlinkFileName = csStartupFolder;
csUnlinkFileName.Append(FILE_SEPARATOR);
csUnlinkFileName.Append(LINK_UNINSTALL_NAME);
csUnlinkFileName.Append(LINK_EXT);//get icon path
CString csExeIconPath;
csExeIconPath = csInstallPath;
csExeIconPath.Append(FILE_SEPARATOR);
csExeIconPath.Append(ICON_APP_EXE_NAME);
CString csUnExeIconPath;
csUnExeIconPath = csInstallPath;
csUnExeIconPath.Append(FILE_SEPARATOR);
csUnExeIconPath.Append(ICON_UNINSTALL_EXE_NAME);TRACE_CS(csLinkFileName);
TRACE_CS(csEXEFilePath);
TRACE_CS(csExeIconPath);
TRACE_CS(csUnlinkFileName);
TRACE_CS(csUnExeFilePath);
TRACE_CS(csUnExeIconPath);
CreateShortCut(csLinkFileName, csEXEFilePath, csExeIconPath);
CreateShortCut(csUnlinkFileName, csUnExeFilePath, csUnExeIconPath);
}
您可能感兴趣的文章:
- C++实现在桌面创建程序的快捷方式
- C++实现在桌面创建程序的快捷方式
- 【转载】C++实现在桌面创建程序的快捷方式
- BAT 批处理创建桌面快捷方式代码大全
- 如何在桌面或者开始菜单中创建快捷方式
- PHP创建桌面快捷方式的实例代码
- 用php或asp创建网页桌面快捷方式的代码
- 在快速启动栏和桌面创建快捷方式(代码片段)
- 批处理实现c/s程序部署,以及创建桌面快捷方式
- 如何在桌面或者开始菜单中创建快捷方式
- Asp.Net-创建网站的快捷方式到桌面,开始菜单,收藏夹
- 原创: 用代码实现为程序创建快捷方式的二种方法
- 批处理实现c/s程序部署,以及创建桌面快捷方式
- 创建桌面快捷方式+设置开机启动代码[C#、WinForm]
- PHP创建桌面快捷方式的实例代码
- 一分钟学会创建开始菜单程序组和桌面快捷方式
- 创建 桌面、发送到...、快速启动栏、开始菜单、程序菜单、右键菜单 快捷方式
- C# 无需COM组件创建快捷方式的实现代码
- 解析Android应用启动后自动创建桌面快捷方式的实现方法
- C++创建桌面快捷方式