各位,Windows下,用GetDC配合GetDIBits可以拿到指定的HWND的Bitmap的BGRA資料。但是在Mac下如何操作,我在搜索引擎上的關鍵子是 "Mac capture window objective-c",得到的結果很多和StackOverflow差不多
StackOverflow上建議用Quartz Window Services,
CGImageRef CGWindowListCreateImage(CGRect screenBounds,
CGWindowListOption listOption,
CGWindowID windowID,
CGWindowImageOption imageOption);
以及
NSBitmapImageRep *bitmapRep = [[NSBitmapImageRep alloc] initWithCGImage:screenShot];
NSImage *image = [[NSImage alloc] init];
[image addRepresentation:bitmapRep];
[bitmapRep release];
bitmapRep = nil;
但是,CGWindowID 我Xcode查出來實際上是 uint32_t。然而現在的MacOSX都已經沒有32位的,我用QT的demo的QWidget的winID()得到的都是64位的,數值超過 2**32 - 1了,如果用上面的函式,傳過去就被截斷了。
現在的目標就是,假設有個QT的程式的A,他的視窗ID是X,然后寫一個OC的代碼,捕獲這個視窗X的畫面內容,得到原生的RGBA資料保存到一個 buffer,我原本寫的是C++,OC不熟悉,不知道這個buffer的型別是不是NSArray,但是我知道可以轉成一個 unsigned char * 的buffer。
請問各位有什么代碼樣例或者說有什么想法建議。最好是代碼的樣例,因為我對OC真的不熟悉。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/112317.html
標籤:其他開發語言
上一篇:求幫做js的自動攻擊
下一篇:0基礎如何快速學好Python?
