如何编程实现在快速启动栏创建快捷方式

原创 2004年07月21日 09:41:00
如何在快速启动栏创建快捷方式


#define NO_WIN32_LEAN_AND_MEAN
#include
#include
// 以上三行放在单元文件最开始

//---------------------------------------------------------------------------
struct TShortcutCfg
{
    // 构造函数
    TShortcutCfg()
    {
        nShowCmd = SW_SHOWNORMAL;
        wHotKey = 0;
        nIconIndex = 0;
    }
    // 结构成员:
    AnsiString  strShortcutName; //
    AnsiString  strLnkDir;       //
    AnsiString  strDestFile;     //
    AnsiString  strArguments;    //
    AnsiString  strIconFile;     //
    int         nIconIndex;      //
    AnsiString  strWorkingDir;   //
    AnsiString  strDescription;  //
    WORD        wHotKey;         //
    int         nShowCmd;        //
};
//---------------------------------------------------------------------------
// 在快速启动栏创建快捷方式
bool CreateQuickLaunchShortcut(TShortcutCfg *scConfig)
{
    char szBuf[MAX_PATH];
    bool bReturn = true;
    wchar_t wszBuf[MAX_PATH];
    IShellLink *pShellLink;
    AnsiString strShortcutFile;

    LPITEMIDLIST lpItemIdList;
    SHGetSpecialFolderLocation(0, CSIDL_APPDATA, &lpItemIdList);
    SHGetPathFromIDList(lpItemIdList, szBuf);
    if(DirectoryExists(AnsiString(szBuf)))
    {
        strShortcutFile = AnsiString(szBuf) + "//Microsoft//Internet Explorer//Quick Launch//" + scConfig->strShortcutName + ".lnk";
        strShortcutFile.WideChar(wszBuf, MAX_PATH);
    }
    else
        bReturn = false;

    if(bReturn)
    {
        bReturn = CoCreateInstance (CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER,
                IID_IShellLink, (void **)&pShellLink) >= 0;

        if(bReturn)
        {
            IPersistFile *ppf;
            bReturn = pShellLink->QueryInterface(IID_IPersistFile, (void **)&ppf) >= 0;
            if(bReturn)
            {
                // 目标文件
                if(scConfig->strDestFile != EmptyStr)
                bReturn = pShellLink->SetPath(scConfig->strDestFile.c_str()) >= 0;
                // 参数
                if(bReturn && scConfig->strArguments != EmptyStr)
                bReturn = pShellLink->SetArguments(scConfig->strArguments.c_str()) >= 0;
                // 显示图标
                if(bReturn && scConfig->strIconFile != EmptyStr && FileExists(scConfig->strIconFile))
                    pShellLink->SetIconLocation(scConfig->strIconFile.c_str(),
                            scConfig->nIconIndex);
                // 起始位置
                if(bReturn && scConfig->strWorkingDir != EmptyStr)
                    pShellLink->SetWorkingDirectory(scConfig->strWorkingDir.c_str());
                // 备注
                if(bReturn && scConfig->strDescription != EmptyStr)
                    pShellLink->SetDescription(scConfig->strDescription.c_str());
                // 快捷键
                if(bReturn && scConfig->wHotKey != 0)
                    pShellLink->SetHotkey(scConfig->wHotKey);
                // 运行方式
                if(bReturn && scConfig->nShowCmd != 0)
                    pShellLink->SetShowCmd(scConfig->nShowCmd);

                if(bReturn)
                    bReturn = (ppf->Save(wszBuf, TRUE) >= 0);

                ppf->Release ();
            }
            pShellLink->Release ();
        }
    }
    return bReturn;
}
// 调用代码举例:
//---------------------------------------------------------------------------
void __fastcall TForm1::Button1Click(TObject *Sender)
{
    TShortcutCfg scShortcut;
    scShortcut.strDestFile = "C://123//123.exe";
    scShortcut.strShortcutName = "test";

    if(CreateQuickLaunchShortcut(&scShortcut))
        ShowMessage("在快速启动栏创建快捷方式成功!");
}
//--------------------------------------------------------------------------- 

手把手教你在ubuntu下创建桌面快捷方式

习惯使用windows的朋友来说创建桌面快捷方式简直就是so easy, 鼠标右键点击文件-->选择发送桌面快捷方式,就OK了。对于ubuntu下该怎样创建桌面快捷方式呢?下面以创建eclipse的快...
  • jizi7618937
  • jizi7618937
  • 2016年03月30日 11:05
  • 6262

Ubuntu在启动器添加程序快捷方式

Ubuntu 启动器 快捷方式 Desktop Entry
  • walker0411
  • walker0411
  • 2016年06月01日 14:40
  • 5934

如何在Linux的桌面上创建快捷方式或启动器

1使用命令行创建桌面快捷方式(h使用) 要为特定程序或命令创建桌面快捷方式,你可以使用任意文本编辑器创建一个.desktop文件,然后把它放到/usr/share/applications或者~/....
  • zhuiqiuk
  • zhuiqiuk
  • 2016年11月04日 16:23
  • 1417

创建快捷方式到桌面、任务栏、开始菜单、快速启动栏、程序组中

//得到快速启动栏的路径 BOOL GetIEQuickLaunchPath(WCHAR *pszIEQueickLaunchPath) { LPITEMIDLIST ppidl; i...
  • qingzai_
  • qingzai_
  • 2017年12月01日 16:35
  • 70

创建快捷方式 (并添加到快速启动栏 、桌面、开始菜单)

首先需要获取三个路径 :桌面路径 、快速启动栏路径、 开始->程序组路径 //得到当前桌面路径 BOOL GetDesktopPath(char *pszDesktopPath) { L...
  • qq_25867649
  • qq_25867649
  • 2016年12月19日 15:57
  • 493

编程快速实现快捷方式的创建和特殊文件家的获取

  • 2008年12月22日 23:35
  • 16KB
  • 下载

编程(C#)实现创建 internet快捷方式 文件

调用如下函数即可 private void CreateShortcutFile(string Title, string URL, string SpecialFolder) ...
  • u012744024
  • u012744024
  • 2014年03月06日 14:49
  • 853

977dh用vbs通过wsh创建桌面快捷方式,快速启动,修改ie主页的恶意代码 ...

Dim WSHShell Set WshShell = WScript.CreateObject("WScript.Shell")   '获取一切脚本的开始 strDesktop = Ws...
  • a343315623
  • a343315623
  • 2016年05月17日 17:19
  • 331

XP中如何在任务栏处添加快速启动项、任务栏无法添加快捷方式

XP中如何在任务栏处添加快速启动项、任务栏无法添加快捷方式  习惯使用Windows 9x的用户都知道在任务栏中有快速启动项,如“启动IE”、“显示桌面”等。但是当我们安装Windows XP以后,...
  • smqh2011
  • smqh2011
  • 2013年08月12日 11:50
  • 3218

Windows XP快速启动栏“显示桌面”快捷图标的恢复方法

  • 2013年04月26日 10:30
  • 1KB
  • 下载
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:如何编程实现在快速启动栏创建快捷方式
举报原因:
原因补充:

(最多只允许输入30个字)