1

次のコードを使用してデスクトップ画像を設定しています:

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

正常に動作し、必要に応じてデスクトップの画像が変更されました。ただし、システム全体のデスクトップ設定は変更されません (たとえば、30 分ごとに画像を変更するなど)。システム全体のデスクトップ設定を変更するにはどうすればよいですか?

4

1 に答える 1

0

Preferences and Settings Programming Guide をご覧ください。これは役立つはずです。

編集
サンプルコードは次のとおりです。

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");
于 2013-07-15T05:56:23.643 に答える