window 快捷方式和开机启动

本文详细介绍了如何使用C++创建快捷方式并设置开机自动运行。通过使用ShellLink类和IPersistFile接口,实现快捷方式的创建及参数、图标、路径等属性的配置,并演示了如何将创建的快捷方式设为开机启动。
  • 创建快捷方式(带参数,图标)

    #include "ShlObj.h"
    GTUSettingDialog::slotCreateLink()
    {
        QFile fileLoader; 
        QString strParam;
        QDir strPath/*工作目录*/; 
        QString strLinkName;
        QString strIcon; // 快捷方式图标
    
        if(!fileLoader.exists())
        {
            return;
        }
    
        HRESULT hr;
        hr = CoInitialize(NULL);
        if (FAILED(hr))
        {
            return;
        }
    
        IShellLink     *pLink;  //IShellLink对象指针
        IPersistFile   *ppf; //IPersisFil对象指针
        //创建IShellLink对象
        hr = CoCreateInstance(CLSID_ShellLink, NULL, CLSCTX_INPROC_SERVER, IID_IShellLink, (void**)&pLink);
        if (FAILED(hr))
        {
            CoUninitialize();
            return;
        }
        //从IShellLink对象中获取IPersistFile接口
        hr = pLink->QueryInterface(IID_IPersistFile, (void**)&ppf);
        if (FAILED(hr))
        {
            pLink->Release();
            CoUninitialize();
            return;
        }
    
        //目标
        pLink->SetPath(strGWSAppLoader.toStdWString().c_str());
        //参数
        pLink->SetArguments(strParam.toStdWString().c_str());
        //设置起始位置
        pLink->SetWorkingDirectory(strPath.toStdWString().c_str());
        //显示方式
        pLink->SetShowCmd(SW_SHOWNORMAL);
        //设置图标
        pLink->SetIconLocation(strIcon.toStdWString().c_str(), 0);
    
        hr = ppf->Save(strLinkName.toStdWString().c_str(), STGM_READWRITE);
    
        ppf->Release();
        pLink->Release();
    
        CoUninitialize();
    }
    

- 设置开机启动

const QString strRegAutoRunPath = "HKEY_CURRENT_USER\\Software\\Microsoft\\Windows\\CurrentVersion\\Run\\";
const QString strAutoRunKey = "DailyNews";
setAutoRun(bool autoStart)
{
    QSettings reg(strRegAutoRunPath, QSettings::NativeFormat);
    if(autoStart)
    {
        reg.setValue(strAutoRunKey, " \"***.exe\" -param");
    }else{
        reg.remove(strAutoRunKey);
    }
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值