gpt4 book ai didi

macos - 如何以编程方式更改系统范围的桌面图片?

转载 作者:行者123 更新时间:2023-12-03 17:22:36 25 4
gpt4 key购买 nike

我使用以下代码来设置桌面图片:

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

它工作正常,桌面图片按照我的要求改变了。但它不会更改系统范围的桌面首选项(例如,每 30 分钟更改一次图片)。如何更改系统范围的桌面首选项?

最佳答案

看看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");

关于macos - 如何以编程方式更改系统范围的桌面图片?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17637510/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com