Как программно изменить общесистемную картинку рабочего стола?
Я использую следующий код для установки картинки на рабочем столе:
NSURL* newImage = [[NSURL alloc] initFileURLWithPath:@"/Users/name/Pictures/test.png"];
[[NSWorkspace sharedWorkspace] setDesktopImageURL:newImage forScreen:screen options:nil error:&nserror];
Он работает нормально, и изображение на рабочем столе изменилось, как я требовал. Но это не меняет общесистемных настроек рабочего стола (например, изменение картинки каждые 30 минут). Как я могу изменить системные настройки рабочего стола?
1 ответ
Решение
Посмотрите на Руководство по программированию предпочтений и настроек. Это должно помочь.
Редактировать:
Вот пример кода:
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");