Я пытаюсь получить цвета пикселей на экране для определенной части экрана. Для этого я использую CGDIsplayCreateImage(_:)
, но по какой-то причине вместо создания снимка экрана с открытыми в данный момент окнами просто выдается изображение обоев и панели задач.
ВДля того, чтобы визуализировать скриншот я использую вид SwiftUI. В моем приложении мне фактически не нужен отображаемый скриншот.
struct ScreenshotView: View {
let cgImage: CGImage
var body: some View {
Image(decorative: cgImage, scale: 3)
}
}
А методы applicationDidFinishLaunching(_:)
выглядят так:
func applicationDidFinishLaunching(_ aNotification: Notification) {
let contentRect = NSRect(x: 0, y: 0, width: 240, height: 240)
// Create the window and set the content view.
window = NSWindow(
contentRect: contentRect,
styleMask: [.titled, .closable, .miniaturizable, .resizable, .fullSizeContentView],
backing: .buffered, defer: false)
window.center()
window.setFrameAutosaveName("Main Window")
window.contentView = NSHostingView(rootView: ScreenshotView(cgImage: CGDisplayCreateImage(CGMainDisplayID())!))
window.makeKeyAndOrderFront(nil)
}
Поскольку XCode и некоторые другие приложения открыты,должен дать мне скриншот текущего экрана со всеми открытыми ветрами. Вместо этого я получаю скриншот обоев и панель задач с названием моего приложения. Приложения не отображаются, а док также отсутствует.

Я что-то не так делаю или это ошибка?
В это ответы на вопросы stackoverflow предполагают, что я правильно использую функцию.