OSX使用C ++和CGWindow API进行截图

时间:2010-09-26 15:07:22

标签: c++ c macos screenshot

我正在尝试使用C / C ++在OSX上截取屏幕截图。 到目前为止,这就是我得到的:

#import <ApplicationServices/ApplicationServices.h>

int main( int argc, char** argv) {
  CGImageRef screenShot = CGWindowListCreateImage( CGRectInfinite,
      kCGWindowListOptionOnScreenOnly, kCGNullWindowID, kCGWindowImageDefault);

  CFStringRef file = CFSTR("/Users/aduh/Desktop/lala.jpg");
  CFStringRef type = CFSTR("public.jpeg");
  CFURLRef urlRef = CFURLCreateWithString( NULL, file, NULL );
  CGImageDestinationRef idst = CGImageDestinationCreateWithURL( urlRef, type, 1, NULL );
  CGImageDestinationAddImage( idst, screenShot, NULL );
  CGImageDestinationFinalize( idst );}

编译很好但没有真正发生。我可能只是犯了一个愚蠢的错误,所以如果有人能指出我正确的方向那就太棒了!

2 个答案:

答案 0 :(得分:1)

正如上面提到的那样,这可以像这样修复,如果重要的话我也使用C ++:

CFURLRef urlRef = CFURLCreateWithFileSystemPath( kCFAllocatorDefault, file, kCFURLPOSIXPathStyle, false );

答案 1 :(得分:0)

CFURLCreateWithString()替换为CFURLCreateWithSystemPath()