2013-03-26 6 views
10

हम जानते हैं कि जावा का उपयोग कर कंप्यूटर को बंद करने के लिए कैसे मजबूर किया जाए। उदाहरण के लिए, निम्नलिखित कोड बल शटडाउन के लिए ठीक काम करता है:फोर्स स्टार्टअप स्वचालित रूप से कंप्यूटर?

public static void main(String arg[]) throws IOException{ 
    Runtime runtime = Runtime.getRuntime(); 
    Process proc = runtime.exec("shutdown -s -t 0"); 
    System.exit(0); 
} 

अब, अगर मैं, एक कंप्यूटर (जो शट डाउन अवस्था में है) प्रारंभ करेंगे तो एक विशेष समय पर बाध्य करना चाहते हैं लगता है, उस में ऐसा करना संभव है जावा या कोई अन्य भाषा?

उत्तर

15

आपको स्टार्टअप को ट्रिगर करने के लिए कुछ चाहिए। इसे ट्रिगर करने का सबसे अच्छा तरीका लैंक पर वेक है।

यदि आप जावा में ऐसा करना चाहते हैं, तो this एक अच्छा संसाधन हो सकता है।

+3

यह आवश्यक रूप से एक लैन कनेक्शन की आवश्यकता होगी। यह बहुत अच्छा होगा अगर _ जावा प्रोग्राम_ लैन कनेक्शन के बिना एक पीसी शुरू कर सकता है। – Apurv

+2

शायद मुझे यहां कुछ याद आ रहा है, लेकिन जैसा कि मैं समझता हूं कि आप एक पीसी पर सॉफ़्टवेयर चलाने के लिए चाहते हैं जो बंद है? –

+2

हाँ ... ऐसा कुछ ...जैसे, जब हमारे मोबाइल स्विच स्वचालित रूप से होते हैं, जब किसी विशेष समय के लिए अलार्म सेट होता है .. –

4

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

आप जावा सहित किसी भी भाषा से बंद सर्वर को पावर कंट्रोल करने के लिए दूरस्थ रूप से इस डिवाइस को नियंत्रित कर सकते हैं।

http://en.wikipedia.org/wiki/Intelligent_Platform_Management_Interface

3

अपने BIOS उन्नत पावर प्रबंधन (एपीएम) संस्करण 1.2 या बाद का समर्थन करता है, तो यह एक टाइमर के आधार पर नींद/Standy या हाइबरनेशन से जगाने के लिए संभव हो जाना चाहिए। विंडोज़ पर एक अंतिम उपयोगकर्ता कार्य शेड्यूलर के माध्यम से ऐसा कर सकता है, और यदि आप इसे प्रोग्रामेटिक रूप से करना चाहते हैं तो आप Task Scheduler interfaces का उपयोग कर सकते हैं।

#include <mstask.h> 
#include <time.h> 

int main() { 
    HRESULT hr = CoInitialize(NULL); 
    if (SUCCEEDED(hr)) { 
    ITaskScheduler *scheduler; 
    hr = CoCreateInstance(CLSID_CTaskScheduler, NULL, CLSCTX_INPROC_SERVER, IID_ITaskScheduler, (void**)&scheduler); 
    if (SUCCEEDED(hr)) { 
     ITask *task; 
     hr = scheduler->NewWorkItem(L"Wake Timer", CLSID_CTask, IID_ITask, (LPUNKNOWN*)&task); 
     if (SUCCEEDED(hr)) { 
     WORD index; 
     ITaskTrigger *trigger; 
     hr = task->CreateTrigger(&index, &trigger); 
     if (SUCCEEDED(hr)) { 
      time_t t = time(NULL) + 120; 
      struct tm *ltime = localtime(&t); 

      TASK_TRIGGER triggertime; 
      memset(&triggertime, 0, sizeof(triggertime)); 
      triggertime.cbTriggerSize = sizeof(TASK_TRIGGER); 
      triggertime.wBeginYear = ltime->tm_year+1900; 
      triggertime.wBeginMonth = ltime->tm_mon+1; 
      triggertime.wBeginDay = ltime->tm_mday; 
      triggertime.wStartHour = ltime->tm_hour; 
      triggertime.wStartMinute = ltime->tm_min; 
      triggertime.TriggerType = TASK_TIME_TRIGGER_ONCE; 
      trigger->SetTrigger(&triggertime); 
      trigger->Release(); 
     } 

     task->SetFlags(TASK_FLAG_DELETE_WHEN_DONE|TASK_FLAG_SYSTEM_REQUIRED|TASK_FLAG_RUN_ONLY_IF_LOGGED_ON); 
     task->SetAccountInformation(L"", NULL); 

     IPersistFile *file; 
     hr = task->QueryInterface(IID_IPersistFile, (void**)&file); 
     if (SUCCEEDED(hr)) { 
      file->Save(NULL, TRUE); 
      file->Release(); 
     } 
     task->Release(); 
     } 
     scheduler->Release(); 
    } 
    CoUninitialize(); 
    } 
    return 0; 
} 
assumedly

यदि आप:

मैं कैसे आप जावा के माध्यम से ऐसा होता है पता नहीं है, लेकिन यहाँ कुछ उदाहरण सी कोड है कि भविष्य में 2 मिनट तक कंप्यूटर को जगाने के लिए भी कार्य बना जाएगा विंडोज़ पर ऐसा कर सकते हैं, अन्य ऑपरेटिंग सिस्टम के लिए समकक्ष एपीआई होना चाहिए।

1

मैंने इंटरनेट पर चारों ओर एक समान प्रश्न ढूंढने का प्रबंधन किया, इसलिए मैं यह देखने के लिए यहां लिंक पोस्ट करूंगा कि आपको यह उपयोगी लगता है या नहीं। (यह वह धागा था जो मैंने पाया: http://www.coderanch.com/t/440680/gc/interact-Windows-Task-Scheduler-Java)

सबसे पहले, मैं यह जोड़ सकता हूं कि जावा एक ऐसी भाषा है जो वर्चुअल मशीन में चलनी चाहिए - इसके चारों ओर कोई दो तरीके नहीं हैं। मैं 'लो-लेवल' प्रोग्रामिंग में अच्छी तरह से नहीं जानता हूं, जैसे कि बीआईओएस स्तर के करीब प्रोग्रामिंग, जो कि हम इस तरह से कह रहे हैं।

जैसा कि सवाल स्पष्ट रूप से जावा के बारे में था, सबसे अच्छा मैं शोध से आ सकता हूं, (यदि आप वास्तव में कुछ के लिए जावा का उपयोग करना चाहते हैं), जावा-कॉम (जेएसीओबी) http://sourceforge.net/projects/jacob-project/ का उपयोग करके जो आपको अनुमति देता है COM भाषा के माध्यम से विंडोज कार्य शेड्यूलर http://msdn.microsoft.com/en-us/library/aa383581%28VS.85%29.aspx में हुक (एएफ

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

आशा है कि मदद करता है।

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