2011-05-04 16 views
6

विंडोज़ में बिजली बचाने के लिए यूएसबी पोर्ट जैसे कुछ परिधीय को कम करने का विकल्प है (यह व्यवहार डिवाइस मैनेजर के माध्यम से सक्षम/अक्षम किया जा सकता है)। बिजली की स्थिति विभिन्न स्थितियों के तहत होती है जैसे कि लैपटॉप के ढक्कन को बंद कर दिया जाता है। यह मेरे लिए एक समस्या पैदा कर रहा है क्योंकि मेरे पास एक जीयूआई है जो यूएसबी पोर्ट से जुड़े हार्डवेयर से बात करता है और लैपटॉप ढक्कन बंद होने पर संचार हर बार टूट जाता है। क्या ऐसा होने से पहले इस पावर-डाउन (स्टैंडबाय?) घटना को प्रोग्रामेटिक रूप से पहचानने का कोई तरीका है और मेरे यूएसबी डिवाइस को अधिक चुपचाप बंद कर दिया गया है? इस व्यवहार को अक्षम करने के लिए प्रोग्राम के प्रत्येक यूएसबी पोर्ट को प्रोग्रामेटिक रूप से कॉन्फ़िगर करने का कोई तरीका है?यूएसबी पावर स्टेटस का पता लगाना

अभी मैं SystemEvents.PowerModeChanged पर देख रहा हूं, क्या यह पता लगाने के लिए यह सही घटना है?

उत्तर

1

ऐसा लगता है जैसे आप चाहते

  1. WM_POWERBROADCAST (http://msdn.microsoft.com/en-us/library/aa373247(v=vs.85).aspx)
  2. RegisterPowerSettingNotification (http://msdn.microsoft.com/en-us/library/aa373196.aspx)

आप पहली बार RegisterPowerSettingNotification तो WM_POWERBROADCAST संदेशों कॉल करने के लिए की जरूरत है अपने आवेदन में प्राप्त होगा पर।

इस पृष्ठ में इन विंडो संदेशों का उपयोग कर एक पावर प्रबंधन कक्षा का सी # कार्यान्वयन है। http://www.koders.com/csharp/fid00BAA34B0CAA3E320F9F5A44610A015973BF28ED.aspx?s=nativemethods#L175

+0

मैं गैर-WinForms सी # कक्षा से उन संदेशों को प्राप्त करने के बारे में कैसे जा सकता हूं? –

+0

ने थोड़ा सा जवाब अपडेट किया है। मैंने वास्तव में ऐसा नहीं किया है, लेकिन मुझे लगता है कि आप किसी भी श्रेणी – Gavin

+0

http://stackoverflow.com/q/1925237/726631 – Saleh

1

जैसा कि पिछले पोस्टर्स द्वारा रिपोर्ट किया गया है रजिस्टरपावरसेटिंग नोटिफिकेशन वह है जो आप चाहते हैं। स्पष्टीकरण के लिए, आप Winforms (System.Windows.Forms.dll) को अन्य प्रकार के .NET अनुप्रयोगों (कंसोल, आदि) से संदर्भित कर सकते हैं। Winform (फॉर्म क्लास) को उप-वर्गीकरण करके और अपने WNDProc को ओवरराइड करके आप विंडो हैंडल (संदेशों को प्राप्त करने के लिए) तक पहुंच प्राप्त कर सकते हैं।

एमएसडीएन के पास उदाहरण कोड के साथ ऐसा करने के लिए very good article है।

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