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);
}
相关文章
- 我们经常会在网站中看到可以直接把网站以快捷方式保存到自己的电脑中,然后只要点击就可以实现进入网了,那么php中怎么把网页添加到桌面快捷方式呢。 功能简单,直接上...2016-11-25
- 远程桌面一连就断..到网上转了一大个圈回来终于找到解决方法....2016-01-27
- 这篇文章主要介绍了C#实现刷新桌面的方法,涉及C#基于shell32.dll动态链接库实现系统桌面刷新的技巧,具有一定参考借鉴价值,需要的朋友可以参考下...2020-06-25
- 本篇文章主要介绍了c#实现windows远程桌面连接程序代码,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧...2020-06-25
WINDOWS 2008 r2 远程桌面账户登录限制(一个帐户两个人使用)
在WINDOWS 2008 R2中,一个帐户是只能默认开启一个远程登录会话,有时候我们需要两个人同时登录服务器就会被挤掉,那么参考下面的方法设置一下即可,需要的朋友可以参考下...2017-07-06Win2012服务器 远程桌面帐户允许多用户同时登录的配置方法
这篇文章主要介绍了Win2012服务器 远程桌面帐户允许多用户同时登录的配置方法,需要的朋友可以参考下...2016-11-01- 这篇文章主要介绍了通过软件修改Win2008默认远程桌面连接端口3389,需要的朋友可以参考下...2016-10-02
- 这篇文章主要介绍了php创建桌面快捷方式实现方法...2016-01-04
- 本文将介绍使用PHP生成网页桌面快捷方式的代码,并添加图标及解决不同浏览器保存出现的乱码问题。下面跟着小编一起来看下吧...2017-05-08
- 有时候由于不当操作使Windows服务器或vps远程桌面出现蓝屏或者黑屏!比如你从本机拷贝一个很大的文件到服务器里,致使服务器反应不过来,下次在登录的时候就会出现上次的这种问题,那么这个时候遇到此问题...2016-01-27
Windows server 2012远程桌面会话主机和远程桌面授权
对于windows server2012服务器一般都是默认能够支持两用户远程登录,而通过安装远程桌面服务里的远程桌面会话主机和远程桌面授权,并对其进行配置,即可实现多用户远程登录...2017-07-06利用微软com组件mstscax.dll实现window7远程桌面功能
利用微软提供的com组件mstscax.dll实现类似window远程桌面功能,大家参考使用吧...2020-06-25- 要利用php创建桌面快捷方式我们需要借助于header,InternetShortcut及一些我看不懂的代码,下面我来介绍一个实例。 方法:新建一个php文件,然后把下面的代码扔进去...2016-11-25
- 在Windows中创建快捷方式很简单,如果想用C#代码的方式创建,就没有那么方便了,因为.NET框架没有提供直接创建快捷方式的方法。这篇文章主要给大家介绍了关于如何使用C#代码创建快捷方式文件的相关资料,需要的朋友可以参考下...2020-06-25
Windwos服务器远程桌面限制用户使用同一个会话的3种设置方法
这篇文章主要介绍了Windwos服务器远程桌面限制用户使用同一个会话的3种设置方法,本文给出了使用远程桌面会话主机配置、使用组策略配置、修改注册表三种设置方法,需要的朋友可以参考下...2016-01-27- 今天给大家分享一款不错的远程控制工具向日葵远程桌面工具,支持多平台,跨网络,对向日葵远程桌面工具感兴趣的朋友跟随小编一起看看吧...2021-05-24
- 下面的代码复制一下存成一个批处理文件后双击即可!...2016-01-27
登录远程桌面时遇到“由于客户端检测到一个协议错误(代码0x1104)”
登录远程桌面时遇到“由于客户端检测到一个协议错误(代码0x1104)”,重新连接N次都还是这个错误提示,最后再重起电脑,还是没用。研究了一下错误终于解决了。...2016-01-27- 如何无法进入远程桌面有什么办法远程重启WIN2003服务器?下面有个不错的方法,大家可以参考下...2016-01-27
- 这篇文章主要介绍了c#获取windows桌面背景的方法,大家参考使用吧...2020-06-25