当前位置:  开发笔记 > 编程语言 > 正文

在Mac上获取桌面背景

如何解决《在Mac上获取桌面背景》经验,为你挑选了1个好方法。

如何在Mac上获取当前壁纸?只需指向一个API函数,这样我就可以使用Google了.

编辑:我想我找到了.[NSUserDefaults standardUserDefaults]在http://lists.apple.com/archives/student-dev/2004/Aug/msg00140.html上提到

也可以从shell:defaults read com.apple.desktop Background

从AppleScript:http://discussions.apple.com/thread.jspa? messageID = 7111272



1> Mecki..:

更新的答案(小牛和更新)

从Mavericks开始,Apple将桌面图像写入

/Users//Application Support/Dock/desktoppicture.db 

这是一个SQLite数据库.您可以像这样在终端中打开此文件

sqlite3 "/Application Support/Dock/desktoppicture.db"

然后运行以下SELECT:

SELECT display_uuid,space_uuid,value 
FROM preferences 
JOIN data ON preferences.data_id=data.ROWID 
JOIN pictures ON preferences.picture_id=pictures.ROWID
JOIN displays ON pictures.display_id=displays.ROWID 
JOIN spaces ON pictures.space_id=spaces.ROWID ;

输出将是

||
||
:

UID1是显示器的UID(例如MacBook的显示器,外部显示器等,因为每个显示器都可以有自己的背景图像),UID2是可选的(有时它是缺失的,这可能意味着该显示器的所有空间)和它是一个空间的UID(OS X上的每个显示可以有多个空格,每个空间都可以有自己的背景),并且是图片的路径(对于这个特定显示的特定空间).

当然,您可以将您的应用程序与SQLite库链接,并使用库调用完成所有这些操作,但是如何使用SQLite和SQL语法进行查询和更新数据当然超出了本答案的范围.只需一个提示:您可以sqlite通过键入.exit(注意前导句点!)退出客户端并按Enter键(CTRL + C将不起作用).

还有一个注意事项:您可以在应用程序中更新数据库,但这将无效,因为Dock不会知道它(您在其背后更改它).为了让Dock意识到这种变化,你已经杀了它killall Dock,就像HUP it(killall -HUP Dock)就足够了,它不会真正杀死它(我没有测试过).在应用程序中,您必须找到Dock的进程ID并向其发送信号(这与其相同killall),获取进程ID和发送信号也超出了该回复的范围.

遗产答案(狮子会及早些时候)

你走在正确的轨道上.如果您在Carbon/Cocoa中编写应用程序,只需加载首选项文件即可.它位于

/Users//Library/Preferences/com.apple.desktop.plist

字典包含带有键的default子字典,该子字典包含一个键ImageFilePath,包含图像文件的绝对路径.

推荐阅读
mobiledu2402851377
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有