CGDisplayCreateImage仅返回墙纸和任务栏

我正在尝试从屏幕上获取显示器指定部分的像素颜色。 我正在使用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和其他一些应用程序已打开,因此应该为我提供所有打开的窗口的当前屏幕截图。相反,我得到了墙纸的屏幕截图和显示我的应用名称的任务栏。没有应用程序显示,并且停靠站也丢失了。

CGDisplayCreateImage仅返回墙纸和任务栏

我做错了还是这是一个错误?

this中,stackoverflow的答案表明我正确使用了该函数。

huihuiitsme 回答:CGDisplayCreateImage仅返回墙纸和任务栏

即使对某些人来说这很明显,我也会在Ken Thomases的帮助下在这里回答我自己的问题。

在下面,您可以找到我在目标中设置的设置。现在,它在每次重建后都有效。 确保停用自动签名,并将签名证书设置为“在本地运行签名”。

enter image description here

希望这会在某个时候对某人有所帮助。

本文链接:https://www.f2er.com/3129387.html

大家都在问