C++ 创建桌面快捷方式 开始菜单的实现代码_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);
}

时间: 2024-12-10 21:19:07

C++ 创建桌面快捷方式 开始菜单的实现代码_C 语言的相关文章

C++ 创建桌面快捷方式 开始菜单的实现代码

这篇文章介绍了C++ 创建桌面快捷方式,开始菜单的实现代码,需要的朋友可以参考一下   复制代码 代码如下: void CInstall_ProgressDlg::CreateShortCut(CString csLinkPath, CString csExePath, CString csIconPath) { HRESULT hres; hres = ::CoInitialize(NULL); if(S_OK == hres) { //delete old link CFileFind cf

c#通过纯代码创建桌面快捷方式、创建程序菜单项、将网页添加到收藏夹

c#通过纯代码创建桌面快捷方式.创建程序菜单项.将网页添加到收藏夹 本文章源代码Src下载地址:http://download.csdn.net/detail/testcs_dn/5141580 开始菜单>程序菜单项: 添加到收藏夹: 相关函数代码: public const int SW_SHOWNORMAL = 1; /// <summary> /// 创建快捷方式. /// </summary> /// <param name="shortcutPath

如何在ubuntu下创建桌面快捷方式

习惯使用windows的朋友来说创建桌面快捷方式简直就是so easy, 鼠标右键点击文件-->选择发送桌面快捷方式,就OK了.对于ubuntu下该怎样创建桌面快捷方式呢?下面以创建eclipse的快捷方式为例,简单介绍一下. 环境: 1)系统版本:Ubuntu 14.04 2)桌面环境:Unity 3)已经下载并解压eclipse(免安装)到/opt目录下 详细步骤: 1)新建文件eclipse.desktop,命令如下: sudo vim  /usr/share/applications/e

PowerShell脚本实现创建桌面快捷方式的方法_PowerShell

本文介绍如何使用PowerShell将一个程序或文件,创建一个桌面快捷方式.在Windows系统里面,手工操作创建桌面快捷方式是很容易的,您只需要右键拖动文件到桌面,然后放开,在自动弹出的菜单中选择"在此创建快捷方式"即可完成,但要编程来实现这个效果就比较复杂了. 首先,我们要使用到COM组件,创建桌面快捷方式,最简单的办法是调用WScript.Shell这个COM组件.那么在PowerShell如何创建一个COM组件呢? 复制代码 代码如下: $shell = New-Object

Android编程创建桌面快捷方式的常用方法小结【2种方法】

本文实例讲述了Android编程创建桌面快捷方式的常用方法.分享给大家供大家参考,具体如下: Android在桌面上生成快捷方式有两种情况,一种是直接在桌面直接生成;一种是长按桌面,在弹出的快捷菜单中生成. 谈谈在桌面上直接生成.个人觉得这个比较爽快,既然都是快捷方式了干嘛还要再隐藏一层呢?当然喜欢桌面干净的就比较喜欢第二个了. 第一个是通过广播(Broadcast)的形式向Luncher发送请求生成快捷方式的. 在网上找到关于这方面的注册信息. <!--设置wallpapaer的activit

vc如何创建桌面快捷方式

BOOL CDlg::CreateDesktopShotCut(CString strName, CString strSourcePath) { if (FAILED(CoInitialize(NULL))) return FALSE; BOOL bRet = FALSE; TCHAR Path[MAX_PATH+1]; CString strDestDir; LPITEMIDLIST pidl; LPMALLOC pShell; if(SUCCEEDED(SHGetMalloc(&pShel

ubuntu创建桌面快捷方式

  ubuntu创建桌面快捷方式 在ubuntu中一些自己安装的程序没有创建快捷方式,每次都通过绝对路径执行比较复杂,可以通过自己创建快捷方式在桌面上,这样方便了每次的启动.我是给chrome创建的快捷方式,在这里和大家分享一下. 首先将下面的代码复制到一个文件中,文件名的格式为:xxxx.desktop . xxxx为你随意取的名字,以简单易懂为原则.一般就是程序的名字. [Desktop Entry] Categories=Development; Comment[zh_CN]= Comme

PHP创建桌面快捷方式的实例代码

 本篇文章主要是对PHP创建桌面快捷方式的实例代码进行了介绍,需要的朋友可以过来参考下,希望对大家有所帮助    代码如下: $shortCut = "[InternetShortcut] URL=http://www.jb51.net IDList= [{000214A0-0000-0000-C000-000000000046}] Prop3=19,2 "; Header("Content-type: application/octet-stream"); hea

win7手动创建桌面快捷方式的两种方法

  当用在安装一些应用程序时,通常程序会自动在桌面创建快捷方式,但也并非每个程序都为其创建快捷方式,故此想要在桌面中显示快捷方式,就需要手工进行创建,不过有很多人不知道如何创建,所以今天小编为大家带来了两种桌面创建快捷方式的操作方法,需要的用户赶快学习下吧! 操作步骤 方法一: 首先先打开程序的安装目录,如果发现有好几个和桌面上的图标一样的图标的话,我们一个一个打开,直到程序能打开了,就能确定是那个图标了,然后在对的图标上单击右键,选择"发送到"--"桌面快捷方式"