200字范文,内容丰富有趣,生活中的好帮手!
200字范文 > Qt for Mac 设置软件开机自启动

Qt for Mac 设置软件开机自启动

时间:2019-02-12 18:29:09

相关推荐

Qt for Mac 设置软件开机自启动

在Qt程序中设置Mac软件的开机自启动,通过调用object-c代码来实现。

目前只测试过在非沙盒的环境下设置开机自启动,沙盒环境下没有测试过(设置方式不同,会比较复杂)

新建类,定义接口

voidsetAutoStart(QStringappPath,boolisAutoStart);

类定义: 其中appPath是软件当前的位置,调用方式: ischecked为真时 打开,为false时关闭开机自启动 调用方式:OSXUtil::GetInstance()->setAutoStart(QCoreApplication::applicationFilePath(),ischecked);

// To convert a QString into NSString *#define QStringToNSString(s) [NSString stringWithUTF8String:s.toUtf8().data()]void OSXUtil::setAutoStart(QString appPath, bool isAutoStart){if(isAutoStart){LSSharedFileListRef loginItems = LSSharedFileListCreate(NULL, kLSSharedFileListSessionLoginItems, NULL);//url为app所在的目录CFURLRef url = (CFURLRef)[NSURL fileURLWithPath:QStringToNSString(appPath)];LSSharedFileListItemRef item = LSSharedFileListInsertItemURL(loginItems, kLSSharedFileListItemLast, NULL, NULL, url, NULL, NULL);CFRelease(item);CFRelease(loginItems);}else{UInt32 seedValue;CFURLRef thePath;LSSharedFileListRef loginItems = LSSharedFileListCreate(NULL, kLSSharedFileListSessionLoginItems, NULL);CFArrayRef loginItemsArray = LSSharedFileListCopySnapshot(loginItems, &seedValue);for (id item in (NSArray *)loginItemsArray) {LSSharedFileListItemRef itemRef = (LSSharedFileListItemRef)item;if (LSSharedFileListItemResolve(itemRef, 0, (CFURLRef*) &thePath, NULL) == noErr) {//appPath目录为要取消开机启动app的路径if ([[(NSURL *)thePath path] hasPrefix:QStringToNSString(appPath)]){LSSharedFileListItemRemove(loginItems, itemRef); // 删除指定的启动项}CFRelease(thePath);}}CFRelease(loginItemsArray);CFRelease(loginItems);}}

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。