2011-03-15 4 views
1

私は通常、問題ではない何かフルスクリーンのアプリを行う必要があります。問題は今、10.7のLaunchpadのように、私の全画面ウィンドウの背景として、アイコンなしでユーザーのデスクトップを持つ必要があるということです。私はAppleScriptの中にデスクトップの背景への参照を得ている:私は普通の道に入るために見つけ出すことができませんでしたdocument file "100930-F-7910D-001.jpg" of folder "Pictures" of folder "Fighter Jet Stuff" of folder "Desktop" of folder "tristan" of folder "Users" of startup disk of application "Finder"ココアのデスクトップの背景を取得する

tell application "Finder" 
    set a to desktop picture 
end tell 

は、これは私にこのような何かを提供します。

私はset a to desktop picture as POSIX pathをやってみましたが、それは私の上にスローアップします。上記のApplescriptを使って、Cocoaでどのようにこのことをやっていけば、AppleScriptを使わずにパスを取得することもできます。私はこの情報を保存するかもしれないplistの特定のフォーマットに依存しないことを望んでいます。私はちょうど知らないフレームワークがあるかもしれないと思っています...

答えて

7

あなたが探しているメソッドは、NSWorkspaceで利用できます。

– desktopImageURLForScreen: 
– setDesktopImageURL:forScreen:options:error: 
– desktopImageOptionsForScreen: 

ここにドキュメントを見てみてください。NSWorkspace Class Reference

+0

おかげで、私は完全にそれを見落とし。私はライブを過度に複雑にするのではなく、最初に完全に見ていたはずです。私はgoogled ...何も。ありがとう! = P –

+1

これはうまくいかず、デスクトップイメージが「画像を変更する」ようにx秒ごとに設定されていれば、ポスターのデスクトップは表示されません。私はこの場合正しい道を得る方法を理解することができませんでした。 – regulus6633

+0

あなたはそれに答えを見つけましたか? –

0

をあなただけの現在の壁紙を必要とする場合、あなたはそれのスクリーンショットを撮ることができます。

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 
    } 
} 
関連する問題