क्या विंडोज 7 कार्य अनुसूचक घटना एक निष्क्रिय END स्थिति का जवाब होगा?


8

विंडोज 7 टास्क शेड्यूलर मुझे एक कार्य चलाने की अनुमति देता है जब कंप्यूटर निष्क्रिय हो जाता है, लेकिन कंप्यूटर को निष्क्रिय से शुरू होने पर, या अब निष्क्रिय नहीं होने पर कार्य को चलाने का कोई स्पष्ट तरीका प्रतीत नहीं होता है।

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

यह मैं कैसे करूंगा?

या, कम से कम, वहाँ एक कमांड लाइन कार्यक्रम कहीं है जो कमांड या घटनाओं को लागू कर सकता है जब कंप्यूटर निष्क्रिय स्थिति से बाहर निकलता है / बाहर निकलता है?

[अद्यतन:] मेरे जवाब में दृष्टिकोण डियागो रोचा काम करता है। मैंने इस स्क्रिप्ट से py2.exe के माध्यम से एक अशक्त निष्पादन योग्य बनाया:

import sys
import time

#restart a pause every twenty seconds, with two functions that call each other.

def call_pause():
    pause()

def pause():
    time.sleep(20)
    call_pause()

call_pause()

- और Windows में एक निर्धारित कार्य सेट करें जिसके लिए यह निर्यातित HTML है:

<?xml version="1.0" encoding="UTF-16"?>
<Task version="1.2" xmlns="http://schemas.microsoft.com/windows/2004/02/mit/task">
  <RegistrationInfo>
    <Date>2012-04-27T17:40:46.8871631</Date>
    <Author>GENIUS-BREATH-COMPY</Author>
    <Description>This task runs ProgA when the computer enters an idle state, and terminates ProgA when the computer *leaves* an idle state. The is all for scheduled TaskB, which periodically runs a batch that tests whether ProgA is running. If ProgA is not running (because this task terminated it), ProgB runs (as the computer is NOT idle). If ProgA *is* running, TaskB's batch does not run ProgB.</Description>
  </RegistrationInfo>
  <Triggers>
    <IdleTrigger>
      <Enabled>true</Enabled>
    </IdleTrigger>
  </Triggers>
  <Principals>
    <Principal id="Author">
      <UserId>S-1-5-18</UserId>
      <RunLevel>HighestAvailable</RunLevel>
    </Principal>
  </Principals>
  <Settings>
    <MultipleInstancesPolicy>IgnoreNew</MultipleInstancesPolicy>
    <DisallowStartIfOnBatteries>false</DisallowStartIfOnBatteries>
    <StopIfGoingOnBatteries>true</StopIfGoingOnBatteries>
    <AllowHardTerminate>true</AllowHardTerminate>
    <StartWhenAvailable>true</StartWhenAvailable>
    <RunOnlyIfNetworkAvailable>false</RunOnlyIfNetworkAvailable>
    <IdleSettings>
      <Duration>PT1M</Duration>
      <WaitTimeout>PT0S</WaitTimeout>
      <StopOnIdleEnd>true</StopOnIdleEnd>
      <RestartOnIdle>true</RestartOnIdle>
    </IdleSettings>
    <AllowStartOnDemand>true</AllowStartOnDemand>
    <Enabled>true</Enabled>
    <Hidden>false</Hidden>
    <RunOnlyIfIdle>true</RunOnlyIfIdle>
    <WakeToRun>false</WakeToRun>
    <ExecutionTimeLimit>PT0S</ExecutionTimeLimit>
    <Priority>7</Priority>
    <RestartOnFailure>
      <Interval>PT1M</Interval>
      <Count>3</Count>
    </RestartOnFailure>
  </Settings>
  <Actions Context="Author">
    <Exec>
      <Command>C:\path_to\nullExecutable</Command>
    </Exec>
  </Actions>
</Task>

और मेरे कंप्यूटर को 15 मिनट तक बेकार छोड़ दिया। टास्क मैनेजर ने अशक्त निष्पादन योग्य दिखाया। जैसे ही मैंने माउस को हिलाया, उसने कंप्यूटर को निष्क्रिय कर दिया, और अशक्त निष्पादन योग्य कार्य सूची से गायब हो गया।

यहां से, यह एक कार्य (या प्रोग्राम - जो मैं पायथन और py2exe के साथ कर रहा हूं) स्थापित करने की बात है जो साइलिस्ट का उपयोग करता है (एक -accepteula स्विच के साथ ताकि कंप्यूटर पर इसे तैनात किया जाता है वास्तव में कार्यक्रम चलाएगा) जांचें कि क्या नल निर्वासन चल रहा है। यदि यह चल रहा है, तो% ERRORLEVEL% पर्यावरण चर 0 पर सेट किया गया है क्योंकि pslist त्रुटि के बिना चला गया। यदि वह वातावरण चर 1 है, तो यह एक त्रुटि के साथ चला (इसे निष्पादन योग्य नहीं मिला)। यदि कंप्यूटर निष्क्रिय नहीं है, तो मैं किसी अन्य कार्य को चलाने के लिए बैच स्क्रिप्ट में उस वातावरण चर का उपयोग कर रहा हूं ।


आप विंडोज 7 की निष्क्रिय स्थिति को कैसे परिभाषित करते हैं ?
डेर होकस्टापलर 20

काश मुझे पता होता। मैंने कथित तौर पर हैक करने के तरीके देखे हैं; मैंने जो सबसे अच्छा उत्तर (और परीक्षण) पाया है, वह यह है कि निष्क्रिय अवस्था 15 मिनट तक बिना किसी उपयोगकर्ता गतिविधि (कीबोर्ड या माउस इत्यादि) और छोटे सीपीयू उपयोग के ट्रिगर होती है।
r_alex_hall

बस FYI करें, मुझे लगता है कि मुझे यह विंडोज इवेंट बहुत ही भड़कीला लग रहा था (यह फिर से शुरू की गई यूजर एक्टिविटी का जवाब नहीं दिया गया), और मैंने जिन सवालों को पूरा करने की कोशिश की थी, वे एक कार्यक्रम में AutoHotkey के माध्यम से बहुत बेहतर थे। विकसित: github.com/r-alex-hall/farmComm
r_alex_hall

जवाबों:


4

मुझे नहीं लगता कि निष्क्रिय घटनाओं पर एक ट्रिगर "बॉर्डर" का पता लगाने के लिए किसी भी तरीके को लागू करना संभव है (निष्क्रिय स्थिति से बाहर निकलें या बाहर निकलें), हालांकि एक आदेश है जो आपके विंडोज को निष्क्रिय स्थिति में प्रवेश करने और निष्क्रिय ट्रिगर कार्यों को चलाने के लिए मजबूर करता है। :

Rundll32.exe advapi32.dll,ProcessIdleTasks

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


1
हम्म। । । जो मुझे सोचने के लिए प्रेरित करता है। । । मैं Rundll32.exe के बिना इस तरह से संपर्क कर सकता था। मैं कंप्यूटर आइडल पर प्रोगा चलाने के लिए निर्धारित टास्क सेट कर सकता हूं - और फिर एक टास्कबी सेट करता हूं, जो एक मिनट में एक बार बैचब.बट चलाता है। यदि ProgA चल रहा है (और यदि यह नहीं है, तो ProgB चलाएं) जाँचने के लिए BatchB.bat Pslist का उपयोग करेगा। यह अपने आप काम नहीं करेगा क्योंकि प्रोगा कंप्यूटर के बेकार होने पर भी चलता रहेगा। । । परंतु । । । (मुझे बस एहसास हुआ!) अगर कंप्यूटर बंद हो जाता है तो "[कार्यक्रम बंद करो]" करने के लिए एक कार्य शेड्यूलर शर्त है। यदि वह प्रोगा के निष्पादन को मार देता है, तो बैचबी.बीएटी प्रोगब चलाएगा!
r_alex_hall
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.