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);
}

(0)

相关推荐

  • JS 添加网页桌面快捷方式的代码详细整理

    复制代码 代码如下: function toDesktop(sUrl,sName){ try{ var WshShell = new ActiveXObject("WScript.Shell"); var oUrlLink = WshShell.CreateShortcut(WshShell.SpecialFolders("Desktop") + "\\" + sName + ".url"); oUrlLink.TargetP

  • 解析Android应用启动后自动创建桌面快捷方式的实现方法

    要不怎么说Android特别开放呢,在Android开发中,只要发送一个广播,就可以实现这种需求了. 废话不多说,以下是封装好的一段代码. 复制代码 代码如下: public class ShortcutUtil { public static void createShortCut(Activity act, int iconResId,              int appnameResId) { // com.android.launcher.permission.INSTALL_SH

  • Android 创建/验证/删除桌面快捷方式(已测试可用)

    测试环境为Adnroid 2.1以上. 第一步:AndroidManifest.xml 权限配置: 添加快捷方式权限: 复制代码 代码如下: <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT"/> 验证快捷方式是否存在权限: 复制代码 代码如下: <uses-permission android:name="com.android.launcher.

  • 用php或asp创建网页桌面快捷方式的代码

    新建一个PHP文档:名字好记就行如:shortcut.php PHP文档中的内容: 代码 复制代码 代码如下: <?php $Shortcut = "[InternetShortcut] URL=http://www.jb51.net/ IDList= [{000214A0-0000-0000-C000-000000000046}] Prop3=19,2 "; Header("Content-type: application/octet-stream");

  • ASP和PHP实现生成网站快捷方式并下载到桌面的方法

    在网站上设置"加入收藏.设为首页"等按钮是一般网站都会干的事儿,但是有的网站还有"放到桌面"这样的功能设置.下面即生成快捷方式并下载到桌面的php实现代码,摘录修改于网络,仅作参考 php实现代码: 复制代码 代码如下: <?phpif(isset($_GET[title]) && trim($_GET[title]) !== "") $title = trim($_GET[tilte]);$content='[DEFAUL

  • Asp.NET生成各种网页快捷方式的代码(桌面url快捷方式,收藏夹/开始菜单快捷方式)

    复制代码 代码如下: using System; using System.Data; using System.Configuration; using System.Collections; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using Syste

  • Android程序开发之手机APP创建桌面快捷方式

    预览效果图: 需要权限: <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> 配置文件:AndroidManifest.xml <activity android:name="com.myself.news.activity.GuideActivity" android:label="@string/title_activi

  • android 为应用程序创建桌面快捷方式技巧分享

    我们开发一款软件后,如果手机装的软件过多,去翻的话会很难翻的,所以,在主页面有一个快捷方式的话会很不错的,下面是详细代码: 复制代码 代码如下: /** * 创建桌面快捷方式 */ private void createShortcut() { SharedPreferences setting = getSharedPreferences("silent.preferences", 0); // 判断是否第一次启动应用程序(默认为true) boolean firstStart =

  • 批处理发送文件夹的快捷方式到桌面的代码

    复制代码 代码如下: echo [InternetShortcut] > "%userprofile%\桌面\文件夹.url" echo URL=file:///C:/windows >> "%userprofile%\桌面\文件夹.url" 将上面的代码保存为1.bat即可.

  • 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(cfin

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

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

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

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

  • Android如何创建桌面快捷方式

    Android创建桌面的快捷方式 概述 :创建桌面快捷方式相当与创建一个程序的入口,就像我们程序在安装完毕后会自动创建一个图标到桌面.其实创建桌面快捷方式跟创建一个程序入口差不多,但是像QQ会话一样创建一个QQ好友的会话快捷方式,就得动态的创建图标,名字了. 1.首先权限是必不可少的 <uses-permission android:name="com.android.launcher.permission.INSTALL_SHORTCUT" /> 2.然后就是在你项目配置

  • php创建桌面快捷方式实现方法

    第一种情况:php生成网页桌面快捷方式 将介绍使用php生成网页桌面快捷方式的代码,并添加图标及解决不同浏览器保存出现的乱码问题. 我们访问网站时,如果网站的内容很有吸引,一般我们都会使用浏览器的收藏夹功能,收藏此网站. 在浏览器收藏的网页,需要打开浏览器,再从收藏夹选定访问. 如果可以在桌面直接进入到网站,这样可以为用户访问提供便利. 我们可以使用php创建网页的快捷入口文件,保存到用户桌面,方便用户快速访问. 生成代码如下: <?php $filename = '破晓领域.url'; $ur

  • C#实现创建桌面快捷方式与添加网页到收藏夹的示例

    今天来介绍一个小功能,就是把正在浏览的某网页添加到收藏夹中.完成这个功能主要是两步,首先要取得系统用户的收藏夹目录,第二是要根据获得页面地址在收藏夹目录创建一个快捷方式.具体我们就一起来了解一下吧. 一.C#创建快捷方式 要创建快捷方式须引用IWshRuntimeLibrary.dll,引用方式为:对项目添加引用-->选择COM组件-->选择"Windows Script Host Object Model"确定,则添加成功!接下来就是编码: /// <summary

  • Android应用创建桌面快捷方式代码

    android的快捷方式比较简单,就是发一个系统的广播,然后为快捷方式设置Intent--- package com.xikang.android.slimcoach.utils; /** * @author huiych * 创建快捷方式 * @created 2013-02-21 * */ import android.content.Intent; import android.os.Parcelable; import com.xikang.android.slimcoach.AppXi

随机推荐