захватить скрытое окно NSWindow - PullRequest
1 голос
/ 07 октября 2011

Я могу захватить NSWindow s, которые видны с помощью кода, симулированного для SonOfGrab Пример

Но как я могу захватить скрытый NSWindow?Или как спрятать NSWindow от пользователя, но все равно появиться в de Windowserver?

Заранее спасибо!

Ответы [ 2 ]

2 голосов
/ 28 декабря 2011

Невозможно захватить содержимое окна NSWindow, которое не отображается на экране.Когда окно свернуто / скрыто / что угодно, визуальное представление сбрасывается для экономии памяти.

(Не уверен, как именно это делается, не стесняйтесь, если у вас есть более глубокие знания о оконной системеЯ знаю это только из опыта, пытаясь захватить окна с помощью CamTwist и BoinxTV.)

0 голосов
/ 04 декабря 2013

Вы можете сделать это:

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;
}
...