2009-02-10 9 views
34

विंडोज के तहत सी ++ के साथ चल रहे एप्लिकेशन का स्क्रीनशॉट लेने का सबसे अच्छा (आसान तरीका) क्या है?विंडोज़ में सी ++ के साथ विंडो के स्क्रीनशॉट लेने का सबसे अच्छा तरीका क्या है?

+12

कुंजीपटल पर 'प्रिंट स्क्रीन' बटन दबाएं। –

+8

यह प्रश्न ऑफ-विषय कैसे था? यह पूछ रहा है कि इसे प्रोग्रामेटिक तरीके से कैसे करें, जो मेरे लिए बहुत प्रासंगिक लगता है (और यह बहुत असामान्य नहीं है)। – jamesdlin

+3

ऑफटॉपिक? वास्तव में? – Nakilon

उत्तर

26

आपको विंडो का डिवाइस संदर्भ (GetWindowDC()) प्राप्त करना होगा और इसकी छवि (BitBlt()) प्रतिलिपि बनाना होगा। एप्लिकेशन के बारे में आप और क्या जानते हैं इसके आधार पर आप GetWindowDC() में किस विंडो के हैंडल को पास करने के लिए विभिन्न विधियों का उपयोग करेंगे।

+6

स्क्रीनशॉट प्राप्त करने के लिए GetWindowDC और BitBlt का उपयोग करने के तरीके के बारे में अधिक जानकारी जोड़ें। मुझे विवरण भी चाहिए .... – jondinham

+0

कोड की आवश्यकता है :(... – Sreekar

3

keybd_event फ़ंक्शन प्रलेखन पर यह कहता है कि आप इसका उपयोग स्क्रीनशॉट लेने और क्लिपबोर्ड पर सहेजने के लिए कर सकते हैं। उदाहरण के लिए:

keybd_event(VK_SNAPSHOT, 0, KEYEVENTF_SILENT, 0); 

मेरी संस्करण में (विजुअल स्टूडियो अपने कंप्यूटर पर स्थापित 2005 मदद) यह कहा गया है कि तुम सिर्फ का एक स्क्रीन शॉट 0 को दूसरा पैरामीटर, या स्थापना करके पूरे डेस्कटॉप का एक स्क्रीनशॉट ले जा सकते हैं वर्तमान एप्लिकेशन इसे 1.

क्लिपबोर्ड बफर से बाहर लेना पाठक के लिए एक अभ्यास के रूप में छोड़ा गया है।

हालांकि मैं ऐसा करने से पहले सावधानी से सोचता हूं क्योंकि यह क्लिपबोर्ड में जो भी छवि डेटा पहले से मौजूद था, उसे टर्फ करेगा।

+1

यह कुंजीपटल पर प्रिंटस्क्र कुंजी के लिए घटना है। आपके द्वारा वर्णित 'keybd_event' का उपयोग स्क्रीनशॉट लेने के लिए नहीं किया जा सकता है। क्या अवधारणा गलत समझ है! – jondinham

+2

@Paul मैंने जो लिंक शामिल किया है उसका पालन करें और टिप्पणियां अनुभाग देखें। यह कहता है: "स्क्रीन स्नैपशॉट प्राप्त करने और क्लिपबोर्ड पर सहेजने के लिए एक एप्लिकेशन PRINTSCRN कुंजी के एक प्रेस को अनुकरण कर सकता है। ऐसा करने के लिए, keybd_event पर कॉल करें VK_SNAPSHOT पर सेट बीवीके पैरामीटर के साथ। " – Daemin

+0

ओह ठीक है, मुझे नहीं पता, हम नहीं जानते कि हम प्रिंट्स कुंजी के प्रेस को अनुकरण कर सकते हैं :) – jondinham

0

यहाँ एक उदाहरण code
आप CaptureAnImage(GetDesktopWindow()); कर सकते हैं एक स्क्रीन पर कब्जा करना है।

संबंधित मुद्दे

 संबंधित मुद्दे