जॉयस्टिक के साथ खेलते समय विंडोज स्क्रीन लॉक को रोकें


12

मेरा विंडोज 7 सिस्टम 20 मिनट की निष्क्रियता के बाद स्क्रीन को लॉक करने के लिए सेट है (यह एक कार्यस्थल-लागू नीति है; मैं इस सेटिंग को बदल नहीं सकता)।

जब मैं कीबोर्ड / माउस का उपयोग कर रहा होता हूं, तो विंडोज उन्हें उपयोगकर्ता इनपुट के रूप में मानता है, और इस तरह स्क्रीन अनलॉक रहती है। हालाँकि, जब मैं केवल जॉयस्टिक का उपयोग करके कोई भी गेम खेल रहा होता हूं, तो विंडोज यह मानता है कि कोई गतिविधि नहीं है, और इस तरह स्क्रीन टाइमआउट के बाद लॉक हो जाती है।

क्या जॉयस्टिक-आधारित गेम का उपयोग करते समय स्क्रीन लॉक को रोकने का कोई तरीका है?

वर्कअराउंड के रूप में, मैं वर्तमान में वीएलसी का उपयोग करके पृष्ठभूमि में कुछ यादृच्छिक वीडियो (म्यूट) खेल रहा हूं, जो स्क्रीन लॉक को रोकता है। लेकिन इस समस्या से निपटने का एक बेहतर तरीका होना चाहिए ...

मैं संभवतः एक स्क्रिप्ट लिख सकता था, जो कुछ कीस्ट्रोक्स के {NUMLOCK}{NUMLOCK}माध्यम से जैसे अनुकरण करेगा sendkeys। हालाँकि, इस के अनजाने साइड-इफ़ेक्ट की संभावना हमेशा बनी रहती है, जैसे मुझे अपने खेल विकल्पों में इन कुंजियों का उपयोग करने से रोकना।


हाँ, यह आपके सुझाव के अनुसार प्राप्त किया जा सकता है। लेकिन क्या आपने जांच की कि क्या आप पावर प्लान को स्विच कर सकते हैं? (पावर प्लान सेटिंग्स को बदलने के बजाय।) कभी-कभी हाई परफॉर्मेंस पावर प्लान में ऊर्जा-बचत की सुविधाएँ अक्षम होती हैं। और यह भी: यदि उन्होंने आपकी पावर प्लान सेटिंग्स को लॉक कर दिया, तो क्या उन्होंने सॉफ़्टवेयर को इंस्टॉल करने या चलाने की क्षमता को अनलॉक कर दिया, जो कि व्यवस्थापक द्वारा अधिकृत नहीं है?
miroxlav

"कभी-कभी उच्च प्रदर्शन पावर प्लान में ऊर्जा-बचत की सुविधाएँ अक्षम होती हैं" अच्छा विचार .. हालाँकि, यह सेटिंग स्क्रीन-सेवर सेटिंग्स में नीति के रूप में लागू की जाती है, न कि पावर-प्लान सेटिंग्स में। "क्या उन्होंने सॉफ्टवेयर को स्थापित करने या चलाने की क्षमता को व्यवस्थापक द्वारा अधिकृत नहीं किया है" सामान्य रूप से, हां, लेकिन उन सॉफ्टवेयर्स को नीति द्वारा लागू सेटिंग्स को नहीं बदला जा सकता है।
ऐशसेन

क्या किसी को किसी भी विंडोज़ एपीआई के बारे में पता है, स्क्रीन लॉक को रोकने के लिए, जो कि वीडियो प्ले करते समय वीएलसी जैसे मीडिया प्लेयर का उपयोग करता है?
ऐशसेन

जवाबों:


1

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

फ़ंक्शन का नाम है SetThreadExecutionStateऔर इसमें पाया जाता है kernel32.dll। VB में वास्तविक कॉल इस तरह दिखता है:

SetThreadExecutionState(ES_SYSTEM_REQUIRED Or ES_DISPLAY_REQUIRED)

दो स्थिरांक:

ES_SYSTEM_REQUIRED = &H1 तथा ES_DISPLAY_REQUIRED = &H2

आप VBScript से ये कॉल नहीं कर सकते, इसलिए आपको इसे कोड करने के लिए कुछ और उन्नत करने की आवश्यकता होगी।

संयोग से, उपरोक्त ऐसा करने का तकनीकी रूप से सही तरीका है। कई उपयोगिताओं जो मैंने वेब पर देखी हैं, किस्ट्रोक्स या माउस को जिगल करने जैसे मूर्खतापूर्ण ट्रिक्स का उपयोग करते हैं। यह मेरी राय में बुरा है, क्योंकि यह आपके काम में हस्तक्षेप कर सकता है।

वैसे भी, मैंने बहुत ज्यादा पचा लिया है। इस तरह का सामान स्टैक ओवरफ्लो पर होता है।


0

आप SetThreadExecutionStateफ़ंक्शन का उपयोग कर सकते हैं , जैसा कि पायथन के ctypes मॉड्यूल द्वारा प्रदान किया गया है, एक स्टैंडअलोन पायथन एप्लिकेशन के भाग के रूप में आप पृष्ठभूमि में चल सकते हैं और Ctrl + C के साथ बाहर निकल सकते हैं। (इस समारोह के उपयोग को समझाने के लिए @ misha256 द्वारा उत्तर के लिए धन्यवाद!)

import ctypes
from time import sleep

ES_CONTINUOUS        = 0x80000000
ES_SYSTEM_REQUIRED   = 0x00000001

# CONTINUOUS repeats the action until the application closes,
# SYSTEM_REQUIRED 'forces the system to be in the working state by resetting the system idle timer.'
ctypes.windll.kernel32.SetThreadExecutionState(ES_CONTINUOUS | ES_SYSTEM_REQUIRED)

# wait until broken
while True:
    # attempt to run the following code
    try:
        sleep(1) # thanks @anishsane
    except(KeyboardInterrupt): # catch a Ctrl+C
        break # stop waiting

मैंने इस स्क्रिप्ट को विंडोज के लिए बनाया है। यहाँ GitHub रिलीज़ पेज पर जाएँ ।


1
0प्लेसहोल्डर के रूप में, मानक तरीका है pass
ऐशसेन

1
इसके अलावा, पास के बजाय कुछ नींद () रखना बेहतर है। अन्यथा, यह व्यस्त-प्रतीक्षा और सीपीयू का उपभोग करेगा। आप वहां घंटों तक सो भी सकते हैं।
ऐशसेन

0

बस नाम की एक फ़ाइल चलाएँ: no_sleep.vbs। इस पाठ फ़ाइल में no_sleep.vbsनीचे दी गई पाठ्य सामग्री होनी चाहिए।
कृपया यदि खाली पाठ फ़ाइल बनाने और उसके विस्तार का नाम बदलने का तरीका नहीं जानते हैं तो कृपया Google पर जाएं।

set wsc = CreateObject("WScript.Shell")
Do
   'Five minutes
    WScript.Sleep(5*60*1000)
    wsc.SendKeys("{F13}")
Loop

कुंजी F13 को खेल विकल्पों में हस्तक्षेप नहीं करना चाहिए


हम्म। काम कर सकता है।
ऐशसेन
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.