1

我一直试图从 MacOSX 10.8.4 中的 C++ 程序中获取屏幕截图,但这是不可能的。我什至无法获得一个像素。甚至可能吗?

有人可以帮助我吗?或者至少给我一些线索或链接。

4

2 回答 2

4
void captureScreen(){
    CGImageRef image_ref = CGDisplayCreateImage(CGMainDisplayID()); 
    CGDataProviderRef provider = CGImageGetDataProvider(image_ref);
    CFDataRef dataref = CGDataProviderCopyData(provider);
    size_t width, height;    width = CGImageGetWidth(image_ref);
    height = CGImageGetHeight(image_ref); 
    size_t bpp = CGImageGetBitsPerPixel(image_ref) / 8;
    uint8 *pixels = malloc(width * height * bpp);
    memcpy(pixels, CFDataGetBytePtr(dataref), width * height * bpp);
    CFRelease(dataref); 
   CGImageRelease(image_ref); 
   FILE *stream = fopen("/Users/robert/Desktop/screencap.raw", "w+");
   fwrite(pixels, bpp, width * height, stream);
   fclose(stream); 
   free(pixels);
}

参考https://gist.github.com/robert-wallis/5063309

于 2013-06-27T12:33:19.943 回答
-3

如果您只想抓取窗口的图像,请尝试按按键顺序⌘</kbd>+shift+3 will take a snapshot of the entire screen, and place the resulting image on your desktop.

替换34将允许您以交互方式选择屏幕区域。

最后,按下⌘</kbd>+shift+4, then space will allow you to select a window to capture.

这个页面很好地描述了许多在屏幕上捕获内容的方法。

于 2013-06-27T06:39:27.997 回答