• 在快速启动栏和桌面创建快捷方式(代码片段)


    bool CreateQuickLaunchShortcut(String& destFile,String& shortCutName,String& arguments)
    {
        char szBuf[MAX_PATH];
    LPITEMIDLIST lpItemIdList;
    SHGetSpecialFolderLocation(0, CSIDL_APPDATA, &lpItemIdList);
    SHGetPathFromIDList(lpItemIdList, szBuf);
    String dir = String(szBuf) + "\\Microsoft\\Internet Explorer\\Quick Launch\\";
    bool result = CreateShortcut(destFile,shortCutName,dir,arguments);
    return result;
    }
    bool CreateShortcut(String& destFile,String& shortCutName,String& dir,String& arguments)
    {
    TShortcutCfg scConfig;
    scConfig.strDestFile = destFile;
    scConfig.strShortcutName = shortCutName;
    scConfig.strArguments = arguments;
    bool bReturn = true;
        wchar_t wszBuf[MAX_PATH];
        IShellLink *pShellLink;
    AnsiString strShortcutFile;


    strShortcutFile = dir + shortCutName + SHORTCUT_SUFFIX;


    strShortcutFile.WideChar(wszBuf, MAX_PATH);


        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;
    }
  • 相关阅读:
    蓝桥杯---打印回型嵌套(简单递归)
    蓝桥杯---分酒
    蓝桥杯---简单试题集锦
    蓝桥杯---黑洞数
    2013蓝桥杯B组 预赛试题
    2012蓝桥杯预赛--取球博弈
    2012第三届蓝桥杯预赛题
    C中的动态开辟(malloc)
    文件的输入输出
    hdoj 1233 还是畅通工程
  • 原文地址:https://www.cnblogs.com/jerry1999/p/3677358.html
Copyright © 2020-2023  润新知