UKLoginItemRegistry
Language: Objective-C, Author: Uli Kusterer
License: MIT/X11
A Cocoa wrapper class around Apple's LoginItemsAE sample code. Get Apple's LoginItemsAE code at:
http://developer.apple.com/samplecode/LoginItemsAE/index.html
UKLoginItemRegistry source preview
// // UKLoginItemRegistry.m // TalkingMoose (XC2) // // Created by Uli Kusterer on 14.03.06. // Copyright 2006 M. Uli Kusterer. All rights reserved. // #import "UKLoginItemRegistry.h" @implementation UKLoginItemRegistry +(NSArray*) allLoginItems { NSArray* itemsList = nil; OSStatus err = LIAECopyLoginItems( (CFArrayRef*) &itemsList ); // Take advantage of toll-free bridging. if( err != noErr ) { NSLog(@"Couldn't list login items error %ld", err); return nil; } return [itemsList autorelease]; } +(BOOL) addLoginItemWithURL: (NSURL*)url hideIt: (BOOL)hide // Main bottleneck for adding a login item. { OSStatus err = LIAEAddURLAtEnd( (CFURLRef) url, hide ); // CFURLRef is toll-free bridged to NSURL. if( err != noErr ) NSLog(@"Couldn't add login item error %ld", err); return( err == noErr ); } +(BOOL) removeLoginItemAtIndex: (int)idx // Main bottleneck for getting rid of a login item. { OSStatus err = LIAERemove( idx ); if( err != noErr ) NSLog(@"Couldn't remove login intem error %ld", err); return( err == noErr ); } +(int) indexForLoginItemWithURL: (NSURL*)url // Main bottleneck for finding a login item in the list. { NSArray* loginItems = [self allLoginItems]; NSEnumerator* enny = [loginItems objectEnumerator]; NSDictionary* currLoginItem = nil; int x = 0; while(( currLoginItem = [enny nextObject] )) { if( [[currLoginItem objectForKey: UKLoginItemURL] isEqualTo: url] ) return x; x++; } return -1; } +(int) indexForLoginItemWithPath: (NSString*)path { NSURL* url = [NSURL fileURLWithPath: path]; return [self indexForLoginItemWithURL: url]; } +(BOOL) addLoginItemWithPath: (NSString*)path hideIt: (BOOL)hide { NSURL* url = [NSURL fileURLWithPath: path]; return [self addLoginItemWithURL: url hideIt: hide]; } +(BOOL) removeLoginItemWithPath: (NSString*)path { int idx = [self indexForLoginItemWithPath: path]; return (idx != -1) && [self removeLoginItemAtIndex: idx]; // Found item? Remove it and return success flag. Else return NO. } +(BOOL) removeLoginItemWithURL: (NSURL*)url { int idx = [self indexForLoginItemWithURL: url]; return (idx != -1) && [self removeLoginItemAtIndex: idx]; // Found item? Remove it and return success flag. Else return NO. } @end
UKLoginItemRegistry header preview
// // UKLoginItemRegistry.h // TalkingMoose (XC2) // // Created by Uli Kusterer on 14.03.06. // Copyright 2006 M. Uli Kusterer. All rights reserved. // // ----------------------------------------------------------------------------- // Headers: // ----------------------------------------------------------------------------- #import <Foundation/Foundation.h> #import "LoginItemsAE.h" /* This class is a wrapper around Apple's LoginItemsAE sample code. allLoginItems returns an array of dictionaries containing the URL of the login item under key UKLoginItemURL and the launch hidden status under UKLoginItemHidden. All methods that return a BOOL generally return YES on success and NO on failure. */ // ----------------------------------------------------------------------------- // Constants: // ----------------------------------------------------------------------------- #define UKLoginItemURL ((NSString*)kLIAEURL) #define UKLoginItemHidden ((NSString*)kLIAEHidden) // ----------------------------------------------------------------------------- // Class Declaration: // ----------------------------------------------------------------------------- @interface UKLoginItemRegistry : NSObject { } +(NSArray*) allLoginItems; +(BOOL) removeLoginItemAtIndex: (int)idx; +(BOOL) addLoginItemWithURL: (NSURL*)url hideIt: (BOOL)hide; +(int) indexForLoginItemWithURL: (NSURL*)url; // Use this to detect whether you've already been set, if needed. +(BOOL) removeLoginItemWithURL: (NSURL*)url; +(BOOL) addLoginItemWithPath: (NSString*)path hideIt: (BOOL)hide; +(int) indexForLoginItemWithPath: (NSString*)path; // Use this to detect whether you've already been set, if needed. +(BOOL) removeLoginItemWithPath: (NSString*)path; @endDownload Archive
Compatible with:
- Mac OS X 10.3
- Mac OS X 10.4 PPC
- Mac OS X 10.4 Intel
- Mac OS X 10.5 PPC
- Mac OS X 10.5 Intel
Comments
Comment feed
