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