Снимок экрана OSX с C ++ и CGWindow API - PullRequest
2 голосов
/ 26 сентября 2010

Я пытаюсь сделать скриншот на OSX с C / C ++.Пока это то, что я получил:

#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 ]

1 голос
/ 16 сентября 2011

Как сказал выше парень, это можно исправить следующим образом, я также использую C ++, если это имеет значение:

CFURLRef urlRef = CFURLCreateWithFileSystemPath( kCFAllocatorDefault, file, kCFURLPOSIXPathStyle, false );
0 голосов
/ 13 мая 2011

Заменить CFURLCreateWithString() на CFURLCreateWithSystemPath()

...