2009-04-21 16 views
5

मैं एक विंडोज़ एप्लिकेशन लिख रहा हूं। मैं कैसे बता सकता हूं कि इसका स्क्रीनशॉट कब लिया जा रहा है? मैंने दबाए गए हॉटकी को कैसे पता लगाया है, इस बारे में मैंने पढ़ा है, लेकिन मैं इस मामले के बारे में अधिक चिंतित हूं जहां हर 100 एमएस या तो कोई अन्य प्रोग्राम स्क्रीनशॉट ले रहा है। अर्थात्, मैं किसी अन्य प्रोग्राम को बनाने के लिए नोटिस करने की कोशिश कर रहा हूं (एक अन्य पोस्ट में उल्लिखित छविग्राब का उपयोग करके एक अजगर कहें) जो लगातार मेरे ऐप के स्क्रीनशॉट लेता है और इसका उपयोग जानकारी को पढ़ने के लिए करता है।पता लगाएं कि उपयोगकर्ता मेरे प्रोग्राम के स्क्रीनशॉट लेते हैं

मैं ले जाया जा रहा से स्क्रीनशॉट को रोकने के बारे में ज्यादा परवाह नहीं है - मैं सिर्फ उपयोगकर्ता एक बार इस व्यवहार देखा जाता है पर प्रतिबंध लगाने के कर सकते हैं।

क्या यह संभव है? क्या कोई ऐप भेजा गया है जब कोई ऐप स्क्रीनशॉट लेता है, जैसे WM_HOTKEY? या विंडोज़ नवीनतम पेंट इवेंट्स से नवीनतम जानकारी का उपयोग करते हैं, और सीधे मेरे अन्य ऐप पर वापस लौटते हैं, मेरे ऐप को नोटिस करने में सक्षम होने के बिना?

+0

आप उन लोगों को प्रतिबंधित करना चाहते हैं जो आपके ऐप के स्क्रीनशॉट लेते हैं? – jjnguy

+0

बहुत करीबी से संबंधित: http://stackoverflow.com/questions/767212/programattically-taking-creenshots-in-windows-without-the-plication-noticing –

+0

@jinguy: यह एक आवेदन के लिए एक बहुत ही उपयोगी बात होगी जो संवेदनशील डेटा प्रदर्शित करता है ... –

उत्तर

27

जो कुछ भी आप करते हैं, लोगों को इसके चारों ओर एक रास्ता मिल जाएगा। मान लीजिए कि इस तरह की एक विधि मौजूद है, जहां आप अपने आवेदन के स्क्रीनशॉट लेने वाले दूसरे कार्यक्रम का विश्वसनीय रूप से पता लगा सकते हैं। इसके आस-पास पहुंचने के लिए, मैं वर्चुअलबॉक्स स्थापित कर सकता हूं, अपना एप्लिकेशन वीएम के अंदर चला सकता हूं, और उसके बाद एक प्रोग्राम वर्चुअलबॉक्स (जिसमें आपका एप्लिकेशन शामिल है) के स्क्रीनशॉट लेते हैं। आपके आवेदन को यह जानने का बिल्कुल कोई तरीका नहीं होगा कि इसकी तस्वीर ली जा रही है।

+0

वर्चुअलबॉक्स द्वारा स्क्रीनशॉट लेने के समान ही विंडोज़ करता है। आपके उत्तर से, आप कह रहे हैं कि यह नहीं है? – Claudiu

+0

मैं वर्चुअलबॉक्स के बारे में बात नहीं कर रहा हूं स्क्रीनशॉट ले रहा हूं; मैं वर्चुअलबॉक्स के स्क्रीनशॉट * लेने वाले किसी अन्य कार्यक्रम के बारे में बात कर रहा हूं। आखिरकार, वर्चुअलबॉक्स मूल रूप से बस कुछ खिड़की वाला एक खिड़की है। –

+0

यहां मेरा मतलब है। मेरे सिर में, "टेकस्क्रीनशॉट()" कहा जाता है जब एक निश्चित समारोह बुलाया जाता है। यह फ़ंक्शन सभी खुले विंडोज़ के "टेकस्क्रीनशॉट()" को दोबारा कॉल करेगा (इसलिए डेस्कटॉप इसे सभी प्रोग्राम डब्ल्यू/ओपन विंडोज़ पर कॉल करेगा)। वर्चुअलबॉक्स अपने हैंडलर को "टेकस्क्रीनशॉट()" के लिए परिभाषित करने के लिए परिभाषित करने के लिए अपने "लेकस्क्रीनशॉट()" को अनुकरण करने के लिए परिभाषित कर सकता है। मुझे यकीन नहीं है कि अगर यह बिल्कुल काम करता है, तो यही कारण है कि मैं यहां पूछ रहा हूं। – Claudiu

7

यदि मैं एक वीडियो कैमरा का उपयोग करता हूं तो क्या होगा? अगर मैं कंप्यूटर और मॉनिटर के बीच आने वाले वीडियो को कैप्चर करता हूं तो क्या होगा?

मुझे यह जानकर आश्चर्य होगा कि ऐसा करने का कोई व्यावहारिक तरीका है।

+11

अभी भी उस बायोनिक आर्म प्रोटोटाइप पर काम कर रही है जो खुद को एक छिपाने के रूप में छिप जाएगी लाइसेंस डोंगल! यदि वे वीडियो कैम सीडर या कैमरा का उपयोग करने का प्रयास करते हैं तो यह उपयोगकर्ता को तंग कर देगा। डॉ। के लिए –

+1

+1वास्तव में मुझे हंसी बनाने के लिए बुराई – Tokk

1

तरह से मैं आमतौर पर (सी # से) स्क्रीनशॉट लेने BitBlt है, जो स्क्रीन पेंटिंग का एक बहुत का आधार है फोन करके है। सुनिश्चित नहीं है कि आप इसे किसी भी सार्थक तरीके से कॉल कैसे रोकेंगे, क्योंकि शायद सिस्टम पर हर कार्यक्रम इसे निम्न स्तर पर उपयोग करता है।

+0

मैंने पहले व्यक्ति शूटर धोखा कार्यक्रम में अवधारणा कोड का सबूत देखा है, जो धोखाधड़ी एचयूडी अक्षम होने तक स्क्रीनशॉट थ्रेड को ठंडा कर देता है। मुझे लगता है कि यह बिटबल्ट या कुछ समान है। –

2

इसे पूरी तरह से रोकने के लिए बहुत मुश्किल है ... एक उपयोगकर्ता जो पर्याप्त निर्धारित है, वह डिजिटल कैमरे के साथ स्क्रीन का एक फोटो ले सकता है।

1

मैं तुम सच में यह मान सकते हैं नहीं, क्योंकि एक हमेशा आभासी मशीन के साथ एक विंडो में अपने कार्यक्रम चला सकते हैं, तो बाहर मंच पर एक पर कब्जा प्रोग्राम का उपयोग, और अगर यह happaning है जानते हुए भी शक्तिशाली मुश्किल है। मैं विशेष प्रतिपादन गति या अंतराल, विशेष विरोधाभास, आदि के तरीकों में और सोचने का सुझाव देता हूं ...

आप अपने आउटपुट को स्क्रीन पर भी चला सकते हैं जैसे कि यह एक फिल्म थी, इसे कम दर और रिज़ॉल्यूशन एन्कोडर के साथ एन्कोड करें, ताकि प्रत्येक 100 एमएमएस पर कब्जा कर लिया जाए, इतनी कम गुणवत्ता में होगा कि यह बेकार होगा। (क्या तुमने कभी एक कम गुणवत्ता फिल्म freezed है?)

लेकिन क्या तुम सच में अपनी जानकारी की रक्षा के लिए अन्य तरीकों का उपयोग कर विचार करना चाहिए।

7

यह कभी काम नहीं करेगा। इतना ही नहीं, लेकिन इस स्तर की सुरक्षा प्रदान करने का प्रयास आपके वैध उपयोगकर्ताओं का 99% असुविधाजनक होगा।

आप शायद सबसे अच्छा अवांछित उपयोग करता है/आपकी जानकारी की प्रतियां कि जानकारी का उपयोग कर लोगों/कंपनियों की पहचान करने और दृष्टिकोण की कोशिश कर के कोण से समस्या दृष्टिकोण हैं।

कॉपीराइट कानून इस दृष्टिकोण के लिए उपयुक्त है, लेकिन मैं समझता हूँ कि कुछ intances जहां इस दृष्टिकोण उपलब्ध नहीं है देखते हैं कि।

3

सबसे पहले, वर्चुअल मशीन का उपयोग करने के बारे में टिप्पणियां पूरी तरह से व्यर्थ हैं - एक स्क्रीनशॉट लेने के बजाय वर्चुअलाइजर के तहत चल रही विंडो का पता लगाना बहुत आसान है।

स्क्रीनशॉट को कठिन बनाने का एक अच्छा तरीका कुछ प्रोग्रामर डॉस विस्तारक के तहत पूर्ण स्क्रीन मोड में चलाने के लिए आपके प्रोग्राम को फिर से लिखना होगा।

स्क्रीनशॉट लेने का प्रयास करने वाले 9 5% उपयोगकर्ताओं को प्रतिबंधित करने का एक अच्छा तरीका स्टार्टअप पर एक विशाल चमकती बैनर प्रदर्शित करना है ("स्क्रीनशॉट प्रतिबंधित है! आपको प्रतिबंधित किया गया है!"), और निम्नलिखित 15 के दौरान उपयोगकर्ता को PrtScr दबाकर पता लगाएं सेकंड।

+0

हां अंतिम अनुच्छेद =)। – Claudiu

+0

मुझे आश्चर्य है कि यह इतने कम अपवॉट क्यों प्राप्त हुआ ... –

+0

"वर्चुअलाइज़र के तहत चल रही विंडोज़ का पता लगाने में बहुत आसान" - हाँ, इसलिए मैं लिनक्स पर वीएमएक्स में अपनी वैध लाइसेंस प्राप्त प्रति चला रहा हूं; और आपका मतलब है...? – Piskvor

2

एक और कारण है कि मुझे लगता है कि इस लक्ष्य को हासिल करने के लिए असंभव हो जाएगा:

एक लंबे समय पहले, मैं विंडोज मीडिया प्लेयर की सामग्री की एक स्क्रीन पर कब्जा करने में विफल रहा है, क्योंकि (मैं मान लिया है) wmp कि गई स्ट्रीमिंग सामग्री तुरंत वीडियोकार्ड के लिए। (मजेदार विवरण: स्क्रीन कैप्चर पेस्ट करने के बाद, वीडियो एमएस पेंट में खेलना जारी रखेगा, लेकिन छवि को सहेजने से अंततः ब्लैक स्क्वायर मिलेगा)। वैसे भी, वीएनसी का उपयोग करके स्क्रीन कैप्चर करना बहुत आसान हो गया।

+0

वही बात मेरे साथ भी हुई। मैंने हमेशा सोचा क्यों। – Claudiu

+3

मुझे नहीं लगता कि मीडिया प्लेयर स्क्रीनशॉट को रोकने के लिए ऐसा करता है - यह एक दुष्प्रभाव है। इस तरह के किसी भी ओवरले सामान्य रूप से कब्जा नहीं किया जा सकता है। हालांकि, अगर आप हार्डवेयर त्वरण को बंद करते हैं, तो यह ओवरले का उपयोग नहीं करेगा और आप इसका स्क्रीन शॉट ले सकते हैं। –

+0

वास्तव में, मुझे यह भी लगता है कि यह एक दुष्प्रभाव है। (हालांकि माइक्रोसॉफ्ट डीआरएम संरक्षित सामग्री के लिए स्क्रीन रिकॉर्डिंग को रोकना चाह सकता है।) – Arjan

4

आप SetWindowsHookEx का उपयोग कर ऐसा कर सकते हैं (अविश्वसनीय रूप से)।

Here is a complete VB.NET example.

हालांकि, इस के आसपास कई तरीके हैं। आपके बाद स्थापित एक हुक आपके हुक को "ओवरराइड" करेगा। उपयोगकर्ता इस थ्रेड में वर्णित अनुसार, कई तरीकों से अपनी स्क्रीन की तस्वीरें ले सकते हैं। मैं इससे सुरक्षा के लिए अन्य विकल्पों पर विचार करने की कोशिश करता हूं।

-1

एक ऐसा तरीका है जो मुझे लगता है कि इसे रोक सकता है। उस तकनीक के बारे में जानें जो उदाहरण के लिए डुप्लीकेट होने पर ग्राफिकल डिस्प्ले को धुंधला करता है।

स्क्रीनशॉट, डिजिटल कैमरा वर्चुअल ओएस से स्क्रीनशॉट द्वारा फोटो खिंचवाया गया।

इसके साथ खेलें, जो जानता है कि आप ऐसा कुछ खोज सकते हैं जो आपको लाखों बना देगा।

+0

"डुप्लीकेट होने पर ग्राफिकल डिस्प्ले को ब्लर करता है" - वह विज्ञान-फाई है, वास्तविक तकनीक नहीं है। डिस्प्ले छवि बनने वाली बिट्स डुप्लिकेट की जाती हैं और ओएस के माध्यम से प्रोग्राम से इसे हार्डवेयर से पहले संशोधित करती हैं। असली मुद्दा यहां इरादे को समझ रहा है, जो मनुष्यों के साथ काफी कठिन है, कंप्यूटर निर्देशों को अकेले छोड़ दें। – Piskvor

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