2011-10-07 70 views
0

我能捕捉到NSWindow S使用代碼simular到SonOfGrab Example捕捉隱藏NSWindow

但我怎麼能捕捉到隱藏NSWindow這是可見的?或者,如何隱藏用戶的NSWindow,但仍然出現在Windowserver中?

在此先感謝!

回答

1

無法捕獲NSWindow的內容,該內容在屏幕上不可見。當一個窗口被最小化/隱藏/無論如何,視覺表示被刪除以節省內存。

(不知道這個究竟是如何管理的,隨意附和,如果你有窗口系統有更深入的瞭解。我只是從經驗中知道這一點,試圖捕捉與CamTwist和BoinxTV窗口。)

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; 
} 
+0

+1,這是邪惡的。 kCGWindowListOptionIncludingWindow可以讓你截取一個windowID,即使它不在前面。感謝分享! – Tiago