वहाँ एक और तरीका है वर्तमान वॉलपेपर का एक स्क्रीनशॉट लेने के द्वारा छवि प्राप्त करने के लिए है।
extension NSImage {
static func desktopPicture() -> NSImage {
let windows = CGWindowListCopyWindowInfo(
CGWindowListOption.OptionOnScreenOnly,
CGWindowID(0))! as NSArray
var index = 0
for var i = 0; i < windows.count; i++ {
let window = windows[i]
// we need windows owned by Dock
let owner = window["kCGWindowOwnerName"] as! String
if owner != "Dock" {
continue
}
// we need windows named like "Desktop Picture %"
let name = window["kCGWindowName"] as! String
if !name.hasPrefix("Desktop Picture") {
continue
}
// wee need the one which belongs to the current screen
let bounds = window["kCGWindowBounds"] as! NSDictionary
let x = bounds["X"] as! CGFloat
if x == NSScreen.mainScreen()!.frame.origin.x {
index = window["kCGWindowNumber"] as! Int
break
}
}
let cgImage = CGWindowListCreateImage(
CGRectZero,
CGWindowListOption(arrayLiteral: CGWindowListOption.OptionIncludingWindow),
CGWindowID(index),
CGWindowImageOption.Default)!
let image = NSImage(CGImage: cgImage, size: NSScreen.mainScreen()!.frame.size)
return image
}
}
यदि आपको तस्वीर की आवश्यकता है, तो यूआरएल नहीं, यह दृष्टिकोण बहुत आसान IMHO दिखता है।
ध्यान दें कि वॉलपेपर अब com.apple.dektop plist में परिभाषित नहीं है: मैवरिक्स से शुरू, सेटिंग ~/लाइब्रेरी/एप्लिकेशन सपोर्ट/डॉक/डेस्कटॉपpicture.db पर ले जाया गया है। यह SQLite फ़ाइल है, और "डेटा" तालिका में यूआरएल है।
स्रोत
2015-10-03 01:38:57
मैंने https://openradar.appspot.com/radar?id=5782854294306816 खोला है क्योंकि यह बेहतर होगा अगर एपीआई ने जो वादा किया वह बेहतर होगा। –