2010-09-08 28 views
12

Win7 पर चलने वाले एक सी ++ प्रोग्राम में, क्या माउस सेविंग या ऐसा कुछ नकली करने का तरीका है, बस स्क्रीन सेवर को शुरू करने से रोकने के लिए और सिस्टम सोने जा रहा है? मैं न्यूनतम दृष्टिकोण की तलाश में हूं और मैं .NET का उपयोग नहीं करना पसंद करता हूं। धन्यवाद, -nuunमैं अपने प्रोग्राम निष्पादन के दौरान स्क्रीन सेवर को कैसे रोकूं और सो सकता हूं?

+2

क्यों क्या आप स्क्रीन सेवर सेटिंग या अपनी सिस्टम पावर सेटिंग नहीं बदलते हैं? –

+1

आपके प्रोग्राम के उपयोगकर्ता के रूप में, _I_ खुद को तय करना चाहता हूं कि क्या मैं कुछ स्क्रीन सेवर द्वारा प्रोग्राम के निष्पादन को धीमा करना चाहता हूं। यदि आप अपने स्वयं के उपयोगकर्ता हैं, तो आप हमेशा सिस्टम की सेटिंग्स को हमेशा बदल सकते हैं। – sbi

+4

असल में यह वैध प्रश्न है। मुझे लगता है कि विंडोज मीडिया प्लेयर वीडियो चलाते समय ऐसा करता है और फिर यह उचित होता है (आप हर पांच मिनट तक खड़े नहीं रहना चाहते हैं और अपनी मूवी का आनंद लेने के लिए बस अपना माउस ले जाना चाहते हैं, है ना? स्क्रीन सेवर को सिर्फ एक को देखने के लिए अक्षम करना फिल्म ओवरकिल है)। – Tomek

उत्तर

29

स्क्रीनसेवर सेटिंग में उलझे नहीं, SetThreadExecutionState का उपयोग करें।

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

, और

मल्टीमीडिया अनुप्रयोगों,, ES_DISPLAY_REQUIRED का उपयोग करना चाहिए, जब वे समय की लंबी अवधि के लिए प्रदर्शन वीडियो उपयोगकर्ता इनपुट के बिना

+0

SetThreadExecutionState() सिस्टम को नियंत्रित करने और नींद प्रदर्शित करने के लिए बहुत अच्छा है, लेकिन यह स्क्रीन सेवर लॉन्च होने से नहीं रोकता है। कम से कम फंक्शन डॉक्टर कहते हैं कि यह नहीं होगा। – naor

+4

सुधार: हालांकि इस फ़ंक्शन के लिए एमएसडीएन पृष्ठ बताता है कि "यह फ़ंक्शन स्क्रीन सेवर को निष्पादित करने से नहीं रोकता है।" ES_DISPLAY_REQUIRED के साथ कॉल करना वास्तव में स्क्रीन सेवर को ट्रिगर करने से रोकता है। – naor

+3

यदि आप .NET - http://pinvoke.net/default.aspx/kernel32.SetThreadExecutionState का उपयोग कर रहे हैं तो यह जाने का तरीका भी है (पी/इनवॉक के माध्यम से) –

-2

मुझे यकीन नहीं है कि आपको इसका सहारा क्यों लेना चाहिए। पावर सेटिंग में इन विकल्पों को अक्षम करना सरल होगा।

आप ऐसा करके क्या हासिल करने की कोशिश कर रहे हैं। क्या आपका आवेदन एक सेवा है। यदि ऐसा है तो आपको इसके बारे में परेशान करने की आवश्यकता नहीं है।

यदि आपका एप्लिकेशन यूआई एप्लीकेशन है तो भी मैं वैध उपयोग केस के बारे में सोच नहीं सकता।

किसी भी तरह हमें अधिक जानकारी चाहिए।

+0

का कहना है कि यह एक ऐसे गेम के दौरान खेला जाने वाला एक लंबा ऑटोप्ले है जहां उपयोगकर्ता इनपुट की आवश्यकता नहीं है, आप नहीं चाहते हैं कि स्क्रीनसेवर आपके उपयोगकर्ता को परेशान करे – gldraphael

0

यह आमतौर पर खराब विचार है। डेस्कटॉप आपके आवेदन के उपयोगकर्ता से संबंधित है, आपका आवेदन नहीं है।

अगर मैं अपने स्क्रीन सेवर को अक्षम कर रहा था (या मेरे डेस्कटॉप आइकनों के चारों ओर स्थानांतरित हो गया था या अपने स्वयं के त्वरित एक्सेस टूलबार में खुद को जोड़ा गया था), तो यह मेरे कान पर बहुत जल्दी फेंक दिया जाएगा।

और, यदि आप हैं उपयोगकर्ता, अपने आवेदन में यह नहीं है। इसे हमारे बाकी हिस्सों की तरह मैन्युअल रूप से बदलें :-)

यदि आप यह करना चाहते हैं (और मैं आपको आग्रह करता हूं कि आप ऐसा न करें, लेकिन आप इसे अनदेखा कर सकते हैं), मुझे नहीं लगता कि विधि बदल गई है NT। आप व्यवहार को बदलने के लिए SPI_SETSCREENSAVEACTIVE के साथ SystemParametersInfo का उपयोग करें। ये स्मृति से user32.dll में हैं।

लेकिन मैं Win7 के तहत है कि विधि का उपयोग कर के साथ सूचित समस्याओं को देखने का एक अस्पष्ट याद है और मुझे लगता है कि समाधान एक रजिस्ट्री परिवर्तन किया गया है 0 (और वापस करने के लिए 1 काम पूरा हो जाने) के लिए HKEY_CURRENT_USER\Control Panel\Desktop तहत ScreenSaveActive की स्थापना।

+1

कहें कि यह एक लंबे * ऑटोप्ले * है जहां एक गेम के दौरान खेला जा सकता है जहां उपयोगकर्ता इनपुट की आवश्यकता नहीं है, आप नहीं चाहते कि स्क्रीनसेवर आपके उपयोगकर्ता को परेशान करे – gldraphael

+3

खराब विचार? मीडिया प्लेयर के बारे में क्या? –

1

एक बुरा विचार नहीं है यही कारण है कि, किसी भी सभ्य मीडिया प्लेयर यह ... देखो करता Win32 एपीआई में SystemParametersInfo(SPI_SETSCREENSAVEACTIVE ...) समारोह के लिए, यह चाल करना चाहिए।

+2

ऐसा नहीं है कि मीडिया प्लेयर क्या करते हैं। मेरा जवाब देखें –

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