是否可以捕获没有桌面项目和任何可能打开的窗口(即仅壁纸)的 Mac OS X 桌面?
我尝试过 CGWindowListCreateImage
、CGWindowListCreateImageFromArray
和 CGDisplayCreateImage
,但没有成功。
本质上,我试图在不使用[NSWorkspacedesktopImageURLForScreen:]
的情况下捕获桌面壁纸(它是一个沙盒应用程序,无法访问文件系统)。
最佳答案
您需要小心测试这是否仍然正确,但桌面窗口位于 Finder 下方(它由 Dock 绘制)。将 kCGWindowListOptionOnScreenBelowWindow
CGWindowListOption
传递给 CGWindowListCreateImage
应该可以得到你想要的(除非有其他东西在该级别以下绘制)。
否则,您需要使用 CGWindowListCreate
并迭代响应,排除窗口级别 kCGMinimumWindowLevel + 19
上停靠栏未绘制的任何内容。
当有多个屏幕时,这会变得有点棘手,但希望这些信息足以让您完成您需要的操作。
关于Cocoa:截取桌面壁纸(没有图标和窗口),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8082837/