Objective c 如何以编程方式捕获mac osx的辅助监视器 #定义最大显示32 CGDirectDisplayID activeDisplays[MAX_DISPLAYS]; CGDisplayCount显示计数; //获取屏幕ID的代码 void screenIDs(

Objective c 如何以编程方式捕获mac osx的辅助监视器 #定义最大显示32 CGDirectDisplayID activeDisplays[MAX_DISPLAYS]; CGDisplayCount显示计数; //获取屏幕ID的代码 void screenIDs(,objective-c,macos,cocoa,monitor,screen-capture,Objective C,Macos,Cocoa,Monitor,Screen Capture,如何以编程方式捕获mac osx的辅助监视器 #定义最大显示32 CGDirectDisplayID activeDisplays[MAX_DISPLAYS]; CGDisplayCount显示计数; //获取屏幕ID的代码 void screenIDs() { CGDisplayErr err; //获取活动显示 err=CGGetActiveDisplayList(最大显示、活动显示和显示计数); if(err!=kCGErrorSuccess){ printf(“错误:无法获取显示:\n

如何以编程方式捕获mac osx的辅助监视器
#定义最大显示32
CGDirectDisplayID activeDisplays[MAX_DISPLAYS];
CGDisplayCount显示计数;
//获取屏幕ID的代码
void screenIDs()
{ 
CGDisplayErr err;
//获取活动显示
err=CGGetActiveDisplayList(最大显示、活动显示和显示计数);
if(err!=kCGErrorSuccess){
printf(“错误:无法获取显示:\n%d\n”,错误);
返回;
}
int i;

对于(i=0;iIs,
activeDisplays[1]
的rect显示您对辅助显示的期望值?另外,为什么
currentScreenPixelData
是一个全局变量?如果
CGDisplayCreateImage()
失败。如果您没有返回
CGImage
,那么您如何解释光栅数据?您没有必要的元数据(每个组件的位等)。是的,rect for activeDisplays[1]我对二次显示的预期实际上我正在输出光栅数据
#define MAX_DISPLAYS 32
CGDirectDisplayID activeDisplays[MAX_DISPLAYS];
CGDisplayCount displayCount;

//code for getting screen IDS 

void screenIDs()
{ 
    CGDisplayErr err; 

    // get the active displays

    err = CGGetActiveDisplayList(MAX_DISPLAYS, activeDisplays, &displayCount);
    if ( err != kCGErrorSuccess ) {
        printf("Error: cannot get displays:\n%d\n", err);
        return;
    }

    int i;
    for (i=0; i<displayCount; i++) {
        printf("%i\n", activeDisplays[i]);
        CGRect rect= CGDisplayBounds(activeDisplays[i]);
        NSLog(@"%f %f %f %f",rect.origin.x,rect.origin.y,rect.size.width,rect.size.height);
    }
}



//Screen capture for Lion OSX

NSData* currentScreenPixelData;
char* capture_screenShot() {
    char* screenData;

    if(_isOSHigherThanSnowLeopard)
    { 
        CGImageRef screenShot = CGDisplayCreateImage(activeDisplays[0]);

        if(screenShot != nil)    
        {
            CGDataProviderRef dataRef = CGImageGetDataProvider(screenShot);

            if(currentScreenPixelData)
            {
                [currentScreenPixelData release];
            }

            currentScreenPixelData = (NSData*) CGDataProviderCopyData(dataRef);
            screenData = (char*)[currentScreenPixelData bytes];

            CGImageRelease(screenShot);
        }
    }

    return screenData;
}