qt 在 Mac 中实现 开机自启和关闭

//开启
bool StartupWithSystem(const std::string& strProgramName)
{
    QString qtoxPlist = QDir::cleanPath(QStandardPaths::writableLocation(QStandardPaths::HomeLocation) +
    QDir::separator() + "Library" + QDir::separator() + "LaunchAgents" + QDir::separator() + "net.my.app.plist");
    QString qtoxDir =  QDir::cleanPath(QCoreApplication::applicationFilePath());

    QSettings autoRun(qtoxPlist, QSettings::NativeFormat);
    autoRun.setValue("Label", "net.my.app.plist");
    //"net.my.app.plist" 此名字自已随意取的   
    autoRun.setValue("Program", qtoxDir);
    autoRun.setValue("WorkingDirectory", QDir::cleanPath(QCoreApplication::applicationDirPath()));
    autoRun.setValue("Disabled", false);
    autoRun.setValue("RunAtLoad", true);

    //startup_with_system(strProgramName, true);
    return true;
}
//关闭
bool RemoveStartupWithSystem(const std::string& strProgramName)
{
    //startup_with_system(strProgramName, false);
    QString qtoxPlist = QDir::cleanPath(QStandardPaths::writableLocation(QStandardPaths::HomeLocation) +
    QDir::separator() + "Library" + QDir::separator() + "LaunchAgents" + QDir::separator() + "net.weline.memenet.plist");
    qDebug()<<"qtoxplist  === "<<qtoxPlist;
    QString qtoxDir =  QDir::cleanPath(QCoreApplication::applicationFilePath());
    QSettings autoRun(qtoxPlist, QSettings::NativeFormat);
    autoRun.setValue("Label", "net.my.app.plist");
    autoRun.setValue("Program", qtoxDir);
    autoRun.setValue("WorkingDirectory", QDir::cleanPath(QCoreApplication::applicationDirPath()));
    autoRun.setValue("Disabled", false);
    autoRun.setValue("RunAtLoad", false);

    return true;
}
    ~/Library/LaunchAgents//当前用户下开机启动后启动下面的plist文件
    /Library/LaunchAgents
    /System/Library/LaunchAgents
以上三个目录为系统推荐放置的路径,是当登录之后启动的进程

    ~/Library/LaunchDaemons
    /Library/LaunchDaemons
    /System/Library/LaunchDaemons
放置在以上三个目录,则启动为守护进程,为系统启动后立即启动的进程


plist中主要的字段和它的含义
    Label 用来在launchd中的一个唯一标识,类似于每一个程序都有一个identifies一样。
    UserName 指定运行启动项的用户,只有当Launchd 作为 root 用户运行时,此项才适用。
    GroupName 指定运行启动项的组,只有当Launchd 作为 root 用户运行时,此项才适用。
    KeepAlive 这个key值是用来控制可执行文件是持续运行呢,还是满足具体条件之后再启动。默认值为            
    false,也就是说满足具体条件之后才启动。当设置值为ture时,表明无条件的开启可执行文件,并使之 
    保持在整个系统运行周期内。
    RunAtLoad 标识launchd在加载完该项服务之后立即启动路径指定的可执行文件。默认值为false。
    Program 这个值用来指定进程的可执行文件的路径。
    ProgramArguments 如果未指定Program时就必须指定该项,包括可执行文件文件和运行的参数。
    WorkingDirectory 工作目录

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值