在10.6.x中更改桌面映像

时间:2009-10-06 10:33:38

标签: objective-c cocoa

我有一个应用程序可以根据用户指定的文件更改用户的桌面背景。

它在10.4和10.5中运行良好,但Apple似乎更改了一些系统通知,这意味着我编写的代码不再有效。

我想知道是否有人见过任何例子,或者是否已经找到了改变图像的方法? 它们似乎仍然使用com.apple.desktop属性列表,但文件更改的通知似乎不再起作用。

使用使用此命令通知操作系统新的背景:

[[NSDistributedNotificationCenter defaultCenter] postNotificationName:@"com.apple.desktop" object:@"BackgroundChanged"];

有什么想法吗?

2 个答案:

答案 0 :(得分:7)

您使用的是未记录的API。毫不奇怪它停止了工作......

10.6在NSWorkspace上有新的公共API。特别是-setDesktopImageURL:forScreen:options:error:方法。

答案 1 :(得分:1)

您也可以调用Applescript来更改壁纸图片。

tell application "Finder"
    set image_file to POSIX file "/Users/user/Pictures/wall.jpg"
    set desktop picture to image_file
end tell

您可以使用NSAppleScript对象通过Cocoa应用程序调用Applescript。