zoukankan      html  css  js  c++  java
  • vc++ windows 快速启动栏创建快捷方式

    创建快速启动栏

    在windows软件开发中,软件安装过程中总是需要在快速启动栏创建快捷方式,下面介绍一种快速启动栏创建快捷方式的方法,具体代码如下:(该方法不支持win10,目前还没有找到win10的创建方法,有方法的朋友欢迎推荐)

    /*

    * 设置快速启动栏

    * szExePath[in]:要创建快捷方式的exe文件全路径

    * szLinkName[in]:要创建的快捷方式的名字

    * iIcon[in]:要创建快捷方式的exe文件RC资源中的icon值(默认为0)

    */

    void MainFrame::AddQueickLaunch(LPCTSTR szExePath, LPCTSTR szLinkName, int iIcon)

    {

        //先获取系统版本号

        CWinVersion version;

        DWORD dwMajorVersion = 6;

        version.GetMajorVersion(dwMajorVersion);

        DWORD dwMinVersion = 0;

        version.GetMinorVersion(dwMinVersion);

        //xp系统

        if (dwMajorVersion < 6)

        {

           PIDLIST_ABSOLUTE ppidl = NULL;

           //获取Application Data的地址

           if (SHGetSpecialFolderLocation(NULL, CSIDL_APPDATA, &ppidl) == S_OK)

           {

               TCHAR szQueickLaunchPath[MAX_PATH] = { 0 };

               BOOL flag = SHGetPathFromIDList(ppidl, szQueickLaunchPath);

               StringCchCat(szQueickLaunchPath, _countof(szQueickLaunchPath), _T("\Microsoft\Internet Explorer\Quick Launch"));

               TCHAR szExeLinkFullPath[MAX_PATH] = { 0 };

               StringCchPrintf(szExeLinkFullPath, _countof(szExeLinkFullPath), _T("%s\%s.lnk"), szQueickLaunchPath, szLinkName);

               //1、添加xp系统中的快速启动栏

               {

                  CreateLinkAnother(szExePath, szExeLinkFullPath, iIcon);

                  SHChangeNotify(SHCNE_ASSOCCHANGED,

                      SHCNF_FLUSH | SHCNF_PATH,

                      szExeLinkFullPath, 0);

               }

           }

        }

        ///win 10

        else if (dwMajorVersion == 10)

        {

           //win10暂不支持该方法

        }

        //win7/win8

        else

        {

          

           LPITEMIDLIST pidlBeginAt, pidlDestination;

           TCHAR szStartMenuPath[MAX_PATH] = { 0 };

           LPITEMIDLIST  ppidl = NULL;

           HRESULT hSpecialPath = SHGetSpecialFolderLocation(NULL, CSIDL_COMMON_PROGRAMS, &ppidl);

           if (hSpecialPath == S_OK)

           {

               BOOL flag = SHGetPathFromIDList(ppidl, szStartMenuPath);

               CoTaskMemFree(ppidl);

           }

           //创建一个目录用来放.lnk文件

           StringCchCat(szStartMenuPath, _countof(szStartMenuPath), _T("\我的快速启动栏"));

           TCHAR szExeLinkFullPath[MAX_PATH] = { 0 };

           StringCchPrintf(szExeLinkFullPath, _countof(szExeLinkFullPath), _T("%s\%s.lnk"), szStartMenuPath, szLinkName);

           ShellExecute(NULL, _T("taskbarpin"), szExeLinkFullPath, NULL, NULL, 0);

           SHChangeNotify(SHCNE_ASSOCCHANGED,

               SHCNF_FLUSH | SHCNF_PATH,

               szExeLinkFullPath, 0);

        }

    }

    其中CWinVersion的定义在我的另一篇博文中,可以到那边进行查看。

  • 相关阅读:
    could not load file or assembly "System.Web.Mvc...
    .Net利用cwbx.dll call AS400 program得到数据
    fastadmin 如何构建组合题--Cannot read property '0' of undefined
    fastadmin的前端js文件中api和event的区别,formatter的意思
    fastadmin是如何使用art-template的,以及如何在js模板中,嵌套JS模板
    学习fastadmin的新技巧:去git里面看文件的修改
    thinphp5,模型调用模型,和控制器调用模型的区别
    fa使用技巧+tp5技巧总结
    input autocomplete的作用是什么?
    fastadmin 实现标签的多选研究---基于fa的test案例,已经CMS中的标签写法
  • 原文地址:https://www.cnblogs.com/snowbook/p/5363568.html
Copyright © 2011-2022 走看看