捕获隐藏的NSWindow

时间:2011-10-07 12:54:02

标签: objective-c macos cocoa image nswindow

我能够使用与SonOfGrab Example

类似的代码捕获可见的NSWindow

但是如何捕获隐藏的NSWindow?或者从用户隐藏NSWindow但仍然出现在de Windowserver中的方法是什么?

提前致谢!

2 个答案:

答案 0 :(得分:2)

无法捕获屏幕上看不到的NSWindow的内容。当窗口最小化/隐藏/无论什么时,可视表示被删除以节省内存。

(不确定如何管理这些内容,如果您对窗口系统有更深入的了解,请随时加入。我只是从经验中了解到这一点,尝试使用CamTwist和BoinxTV捕获窗口。)

答案 1 :(得分:0)

您可以通过以下方式完成:

NSImage *img = [[NSImage alloc] initWithCGImage:[window windowImageShot] size:window.frame.size];

类别到NSWindow:

- (CGImageRef)windowImageShot
{
    CGWindowID windowID = (CGWindowID)[self windowNumber];
    CGWindowImageOption imageOptions = kCGWindowImageBoundsIgnoreFraming | kCGWindowImageNominalResolution;
    CGWindowListOption singleWindowListOptions = kCGWindowListOptionIncludingWindow;
    CGRect imageBounds = CGRectNull;

    CGImageRef windowImage = CGWindowListCreateImage(imageBounds, singleWindowListOptions, windowID, imageOptions);

    return windowImage;
}