কোন উইন্ডোজ 7 টাস্ক শিডিয়ুলার ইভেন্টটি অলস শর্তে সাড়া দেবে?


8

উইন্ডোজ task টাস্ক শিডিয়ুলারটি যখন কম্পিউটার অলস হয়ে যায় তখন আমাকে একটি টাস্ক চালানোর অনুমতি দেয়, তবে কম্পিউটার যখন নিষ্ক্রিয় থেকে পুনরায় চালু হয় বা আর নিষ্ক্রিয় থাকে না তখন কোনও কাজ চালানোর কোনও সুস্পষ্ট উপায় বলে মনে হয় না।

কম্পিউটারটি যখন অলস থাকে না তখন অবশ্যই উইন্ডোজে একটি ইভেন্টের সূত্রপাত ঘটে (ইভেন্ট লগ?) বা কম্পিউটারটি আর নিষ্ক্রিয় নয় এই সত্যটি ক্যাপচার করার কোনও উপায় এবং একটি নির্ধারিত টাস্কের সাথে সাড়া দিন?

আমি এই কিভাবে করব?

বা সবচেয়ে খারাপভাবে, কোথাও কোনও কমান্ড-লাইন প্রোগ্রাম রয়েছে যা কম্পিউটার যখন নিষ্ক্রিয় স্থিতি প্রবেশ করে / প্রস্থান করে তখন কমান্ড বা ইভেন্টগুলি শুরু করতে পারে?

[আপডেট:] ডায়োগো রোচায় আমার জবাবের পদ্ধতির কাজ করে। আমি এই স্ক্রিপ্টের বাইরে পাই 2 এক্সির মাধ্যমে নাল এক্সিকিউটেবল তৈরি করেছি:

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()

- এবং উইন্ডোজ একটি নির্ধারিত টাস্ক সেট আপ করুন যার জন্য এটি এক্সপোর্ট করা এইচটিএমএল:

<?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 মিনিটের জন্য অলস রেখে দিয়েছে। টাস্ক ম্যানেজার নাল এক্সিকিউটেবল চলমান দেখিয়েছেন। আমি মাউসটি সরানোর সাথে সাথে এটি কম্পিউটারকে অলস থেকে বের করে নিয়ে গেল এবং নাল এক্সিকিউটেবল টাস্ক তালিকা থেকে অদৃশ্য হয়ে গেল।

এখান থেকে, এটি কোনও টাস্ক (বা প্রোগ্রাম - যা আমি পাইথন এবং পাইপেক্সে দিয়ে যাচ্ছি) সেটআপ করার বিষয় যা পিএসলিস্ট ব্যবহার করে (একটি -সেপটিউলা স্যুইচ সহ যাতে এটি কম্পিউটারে এটি স্থাপন করা হয় তবে প্রোগ্রামটি আসলে প্রোগ্রামটি চালাবেন) নাল এক্সি চলছে কিনা তা পরীক্ষা করে দেখুন। এটি যদি চলমান থাকে তবে% ERRORLEVEL% এনভায়রনমেন্ট ভেরিয়েবল 0 তে সেট করা থাকে কারণ pslistটি ত্রুটি ছাড়াই দৌড়েছিল। যদি সেই পরিবেশের পরিবর্তনশীল 1 হয় তবে এটি একটি ত্রুটি নিয়ে চলেছিল (এটি নির্বাহযোগ্য চলমান খুঁজে পায়নি)। কম্পিউটারটি নিষ্ক্রিয় না থাকলে অন্য একটি কাজ চালানোর জন্য আমি ব্যাচ স্ক্রিপ্টে সেই পরিবেশের পরিবর্তনশীলটি কাজে লাগাচ্ছি ।


আপনি কীভাবে উইন্ডোজ 7 এর অলস অবস্থাকে সংজ্ঞায়িত করবেন ?
ডের হচস্টাপলার

আমি যদি জানতাম। আমি সম্ভবত এটি হ্যাক করার উপায়গুলি দেখেছি; আমি খুঁজে পেয়েছি (এবং পরীক্ষিত) এর সেরা উত্তরটি হ'ল নিষ্ক্রিয় অবস্থাটি কোনও ব্যবহারকারীর ক্রিয়াকলাপের 15 মিনিট (কীবোর্ড বা মাউস ইত্যাদি ইনপুট) এবং সামান্য সিপিইউ ব্যবহারের সাথে ট্রিগার করা বলে মনে হচ্ছে।
r_alex_hall

শুধু এফওয়াইআই, আমি মনে করি যে আমি এই উইন্ডোজ ইভেন্টটি খুব তীব্র বলে মনে করেছি (এটি সর্বদা ব্যবহারকারীর ক্রিয়াকলাপটি পুনরায় শুরু করতে সাড়া দেয় না), এবং আমি যে লক্ষ্যগুলি প্রশ্নটি অর্জন করতে চেয়েছিলাম সেগুলি অটোহটকি দ্বারা আরও ভালভাবে সম্পাদিত হয়েছিল, আমি একটি প্রোগ্রামে উন্নত: github.com/r-alex-hall/farmComm
r_alex_hall

উত্তর:


4

আমি মনে করি না যে নিষ্ক্রিয় ইভেন্টগুলিতে একটি ট্রিগার "বর্ডার" সনাক্ত করতে কোনও পদ্ধতি প্রয়োগ করা সম্ভব (নিষ্ক্রিয় অবস্থা থেকে প্রবেশ বা প্রস্থান), তবে এমন একটি কমান্ড রয়েছে যা আপনার উইন্ডোজকে নিষ্ক্রিয় অবস্থায় প্রবেশ করতে এবং নিষ্ক্রিয় ট্রিগারযুক্ত কাজগুলি চালাতে বাধ্য করে is :

Rundll32.exe advapi32.dll,ProcessIdleTasks

এই কমান্ডটি চালানোর জন্য আপনি অন্য ইভেন্টের (ইভেন্ট লগ থেকে) একত্রিত করতে পারেন যা ফলস্বরূপ নিষ্ক্রিয় স্থানে চালিত হওয়া অন্য কোনও কাজকে ট্রিগার করে। আপনি যতদূর জানেন যে আপনি চান যে কোনও কাজ অবাধে সংহত করতে পারেন।


1
হুঁ। । । এটি আমাকে ভাবতে পরিচালিত করে। । । আমি Rundll32.exe ছাড়াই সেভাবে যেতে পারি। আমি কম্পিউটার নিষ্ক্রিয় অবস্থায় প্রোগা চালানোর জন্য নির্ধারিত টাস্কএ সেট করতে পারি - এবং তারপরে একটি টাস্কবি সেট আপ করতে পারি, যা মিনিটে একবার ব্যাচবি.ব্যাট চালায়। প্রগা চালাচ্ছে কিনা তা পরীক্ষা করতে ব্যাচবি.বাটগুলি প্লেলিস্টটি ব্যবহার করবে (এবং যদি তা না হয় তবে প্রোগবি চালান)। এটি নিজেই কাজ করবে না কারণ কম্পিউটার নিষ্ক্রিয় থাকলেও প্রগা চলতে থাকবে। । । কিন্তু । । (আমি ঠিক বুঝতে পেরেছি!) "কম্পিউটার যদি নিষ্ক্রিয় হয়ে পড়ে তবে" [প্রোগ্রামটি] বন্ধ করুন "এর একটি টাস্ক শিডিয়ুলারের শর্ত রয়েছে। এটি যদি প্রোগার মৃত্যুদন্ড কার্যকর করে, তবে ব্যাচবি.বাট প্রোগবি চালাবে!
r_alex_hall
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.