Cocoa:截取桌面壁纸(没有图标和窗口)

标签 cocoa screenshot sandbox

是否可以捕获没有桌面项目和任何可能打开的窗口(即仅壁纸)的 Mac OS X 桌面?

我尝试过 CGWindowListCreateImageCGWindowListCreateImageFromArrayCGDisplayCreateImage,但没有成功。

本质上,我试图在不使用[NSWorkspacedesktopImageURLForScreen:]的情况下捕获桌面壁纸(它是一个沙盒应用程序,无法访问文件系统)。

最佳答案

您需要小心测试这是否仍然正确,但桌面窗口位于 Finder 下方(它由 Dock 绘制)。将 kCGWindowListOptionOnScreenBelowWindow CGWindowListOption 传递给 CGWindowListCreateImage 应该可以得到你想要的(除非有其他东西在该级别以下绘制)。

否则,您需要使用 CGWindowListCreate 并迭代响应,排除窗口级别 kCGMinimumWindowLevel + 19 上停靠栏未绘制的任何内容。

当有多个屏幕时,这会变得有点棘手,但希望这些信息足以让您完成您需要的操作。

关于Cocoa:截取桌面壁纸(没有图标和窗口),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8082837/

相关文章:

Android 屏幕截图 - 如何?

python - 通过套接字发送图像时遇到问题

hadoop - 无法建立沙箱连线

objective-c - maskToBounds 设置为 NO 似乎没有效果

objective-c - 模态 session 需要 Mac 上的模态窗口错误

android - 我需要用UNITY的Android和IOS应用程序设置保存图片的路径

ios - 无法上传照片库视频,但可以上传从相机 iOS 拍摄的视频

php - 是否有一个 PHP 沙箱,比如 JSFiddle 之类的 JS?

macos - 列出 macOS 上的所有 NSPasteBoard 名称

objective-c - 在 Cocoa 中读取带进度条的文件