Cocoa 应用程序可以将自己添加到LSSharedFileList
的登录项目列表。这将允许应用程序在用户登录时启动。但是,有没有办法判断用户是启动应用程序还是应用程序在登录时自动启动?这很有用,因为在一种情况下,我们可以在另一种情况下显示用户界面,我们可以隐藏 UI 并在后台将应用程序作为菜单栏应用程序运行。
这是一些代码。我不确定它会为登录项返回什么,但如果您尝试并发表评论,我会更新帖子。它确实返回com.apple.Finder
对于查找器和com.apple.dt.Xcode
对于 Xcode。
+ (NSString *) bundleIdentifierOfParentProcess {
NSString *result = nil;
ProcessSerialNumber psn = {0, 0};
if (0 == GetCurrentProcess(&psn)) {
ProcessInfoRec myProcessInfo;
myProcessInfo.processInfoLength = sizeof(ProcessInfoRec);
myProcessInfo.processName = NULL;
myProcessInfo.processAppRef = NULL;
if (0 == GetProcessInformation(&psn, &myProcessInfo)) {
ProcessSerialNumber parentPSN = myProcessInfo.processLauncher;
CFDictionaryRef parentProcessInfo =
ProcessInformationCopyDictionary(&parentPSN,
kProcessDictionaryIncludeAllInformationMask);
if (parentProcessInfo) {
result =
[(__bridge NSDictionary *) parentProcessInfo objectForKey:
(__bridge id) kCFBundleIdentifierKey];
CFRelease(parentProcessInfo);
}
}
}
return result;
}
parentProcessInfo
是一个充满值的字典,如果包标识符不够有意义,这也可能会有所帮助。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)