gpt4 book ai didi

objective-c - 抓取一个被遮挡的窗口的屏幕截图

转载 作者:行者123 更新时间:2023-12-04 00:45:03 25 4
gpt4 key购买 nike

我正在使用 CGWindowListCreateImage 获取屏幕截图。我试图捕获一个特定的窗口,我知道它的 windowID。这是我正在使用的代码,但它似乎总是占据整个屏幕,包括所有窗口。

CGImageRef windowImage = CGWindowListCreateImage(
CGRectNull,
kCGWindowListOptionOnScreenOnly,
windowID,
kCGWindowImageBoundsIgnoreFraming);

我做错了什么?

最佳答案

您要求它抓取整个屏幕,包括所有窗口,因此您得到的正是您所要求的。看the documentation :

windowOption

The options describing which windows to include in the image. Typical options let you choose all windows or windows above or below the window specified in the windowID parameter. For more information, see “Window List Option Constants.”

对于这个值,您将传递 kCGWindowListOptionOnScreenOnly,这意味着:

List all windows that are currently onscreen. Windows are returned in order from front to back. When retrieving a list with this option, the relativeToWindow parameter should be set to kCGNullWindowID.

从技术上讲,通过 windowID 传递此选项甚至是不合法的,但如果您这样做,Quartz 会很好并且会忽略您的 ID。

如果您希望屏幕截图限制在窗口的屏幕矩形范围内,您需要传递它,而不是 CGRectNull。如果您想要被遮挡的窗口而不是前面的窗口,请使用 kCGWindowListOptionOnScreenBelowWindow | kCGWindowListOptionIncludingWindow 供您选择。

关于objective-c - 抓取一个被遮挡的窗口的屏幕截图,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11992369/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com