2009-11-06 11 views
7

के लिए उद्देश्य सी का उपयोग कर स्क्रीन कैप्चर करें क्या किसी को पता है कि मैक ओएस में उद्देश्य सी का उपयोग करके मैं स्क्रीन कैप्चर कैसे कर सकता हूं? अधिक विशिष्ट होने के लिए, मैं सक्रिय/केंद्रित एप्लिकेशन स्क्रीन को कैप्चर कैसे कर सकता हूं, फिर एक निर्दिष्ट पथ में एक छवि बना सकता हूं।
किसी भी मदद की अत्यधिक सराहना की जाती है।मैक

उत्तर

4

क्या आपने सीजीविंडो एपीआई के साथ विंडोज़ की छवियों को कैप्चर करने के लिए ऐप्पल के “Son of Grab” की जांच की है?

+1

हाँ, मैं इसे देखा है, मैं नहीं बल्कि उद्देश्य सी के लिए नया हूँ , ग्रैब का बेटा मेरे लिए थोड़ा मुश्किल है। मेरी आवश्यकता बहुत सरल है, एक ऐप बनाएं जो पृष्ठभूमि में चलता है, कुछ मानदंडों को पूरा करने पर, केवल वर्तमान केंद्रित विंडो को कैप्चर करें और निर्दिष्ट पथ पर एक छवि बनाएं – Daniel

1

तुम भी जाँच कर सकते हैं एप्पल के OpenGLScreenSnapshot

7

@Daniel, आप समझते हैं और पूरे "ग्रैब का बेटा" लागू करने की आवश्यकता नहीं है। आपको बस नीचे दिए गए कोड की आवश्यकता है।

निम्नलिखित समारोह आप स्क्रीनशॉट

// This just invokes the API as you would if you wanted to grab a screen shot. The equivalent using the UI would be to 
// enable all windows, turn off "Fit Image Tightly", and then select all windows in the list. 
CGImageRef screenShot = CGWindowListCreateImage(CGRectInfinite, kCGWindowListOptionOnScreenOnly, kCGNullWindowID, kCGWindowImageDefault); 

उपयोग निम्न कोड यह एक NSImage कन्वर्ट करने के लिए दे देंगे

NSBitmapImageRep *bitmapRep = [[NSBitmapImageRep alloc] initWithCGImage:screenShot]; 
// Create an NSImage and add the bitmap rep to it... 
NSImage *image = [[NSImage alloc] init]; 
[image addRepresentation:bitmapRep]; 
[bitmapRep release]; 
bitmapRep = nil;