2013-07-14 2 views
1

Я использую следующий код, чтобы установить картинку на рабочем столе:Как я могу с программным изменением общесистемного рабочего стола?

NSURL* newImage = [[NSURL alloc] initFileURLWithPath:@"/Users/name/Pictures/test.png"]; 
[[NSWorkspace sharedWorkspace] setDesktopImageURL:newImage forScreen:screen options:nil error:&nserror]; 

Он отлично работает и на рабочем столе картина изменилась, как я требовал. Но это не изменяет общесистемные настройки рабочего стола (например, менять изображение каждые 30 минут). Как изменить настройки рабочего стола в системе?

ответ

0

Посмотрите на Preferences and Settings Programming Guide. Это должно помочь.

Edit:
Вот пример кода:

NSString* newImgPath = @"/Users/cody/Desktop/stuff/imgs/Black_mac.png"; 

NSUserDefaults* defaults = [NSUserDefaults standardUserDefaults]; 
NSMutableDictionary* desktopDict = [NSMutableDictionary dictionaryWithDictionary:[defaults persistentDomainForName:@"com.apple.desktop"]]; 
NSMutableDictionary* bgDict = [desktopDict objectForKey:@"Background"]; 
NSMutableDictionary* spaces = [bgDict objectForKey:@"spaces"]; 
[spaces enumerateKeysAndObjectsUsingBlock:^(NSString* key, NSMutableDictionary* obj, BOOL *stop) { 
    [obj enumerateKeysAndObjectsUsingBlock:^(id key, NSMutableDictionary* prefs, BOOL *stop) { 
     [prefs setObject:newImgPath forKey:@"ImageFilePath"]; 
     [prefs setObject:newImgPath forKey:@"NewImageFilePath"]; 
     [prefs setObject:@"Never" forKey:@"Change"]; 
    }]; 
}]; 

//NSLog(@"%@", desktopDict); 

[defaults setPersistentDomain:desktopDict forName:@"com.apple.desktop"]; 
if ([defaults synchronize] == NO) 
    NSLog(@"synchronize failed"); 

// Restart dock 
system ("/usr/bin/killall Dock"); 
+0

Спасибо за ссылку. Но я все еще не понимаю, прочитав ссылку. Можете быть более конкретными? – nim

+0

Я узнал, что есть значения по умолчанию для командной строки, которые могут читать/записывать системные настройки (на самом деле это мои пользовательские предпочтения системных приложений). Например, по умолчанию читается com.apple.desktop. – nim

+0

Вывод по умолчанию чтения com.apple.desktop: { Фоновые = { пространства = { "" = { 69677376 = { Изменить = Никогда; ChangePath = "/ Library/Desktop Pictures"; // ... }; "update-id" = 10080000; } – nim

Смежные вопросы