एक दृश्य स्टूडियो 2005 सी ++ MFC आवेदन आप अपने संदेश नक्शा इस उदाहरण में WM_POWERBROADCAST
संदेश की तलाश के लिए एक ON_MESSAGE()
जोड़ने की आवश्यकता होगी में:
BEGIN_MESSAGE_MAP(CFrameworkWndDoc, CWindowDocument)
//{{AFX_MSG_MAP(CFrameworkWndDoc)
ON_WM_CHAR()
ON_WM_TIMER()
//}}AFX_MSG_MAP
ON_MESSAGE(WM_POWERBROADCAST, OnPowerMsgRcvd)
END_MESSAGE_MAP()
तो फिर तुम संदेश हैंडलर समारोह जोड़ने की आवश्यकता होगी वर्ग परिभाषा परिवर्तन के साथ ही इतनी है कि आप इस कंकाल के रूप में संदेश प्रकार के लिए wParam
चर जांच कर सकते हैं संदेश हैंडलर के लिए सदस्य समारोह की घोषणा करने के:
// Handle the WM_POWERBROADCAST message to process a message concerning power management
// such as going to Sleep or Waking Up.
LRESULT CFrameworkWndDoc::OnPowerMsgRcvd(WPARAM wParam, LPARAM lParam)
{
switch (wParam) {
case PBT_APMPOWERSTATUSCHANGE:
TRACE0("PBT_APMPOWERSTATUSCHANGE received\n");
break;
case PBT_APMRESUMEAUTOMATIC:
TRACE0("PBT_APMRESUMEAUTOMATIC received\n");
break;
case PBT_APMRESUMESUSPEND:
TRACE0("PBT_APMRESUMESUSPEND received\n");
break;
case PBT_APMSUSPEND:
TRACE0("PBT_APMSUSPEND received\n");
break;
}
return 0;
}
मैं क्या है से एन कि एक आवेदन पत्र में ऊपर का उपयोग कर एक परीक्षण विंडोज 7 कि डीबगर में शुरू कर दिया है पर चल रहा है और उसके बाद मैं मैन्युअल रूप से नींद के लिए मैं निम्नलिखित संदेश देखेंगे अनुप्रयोग चल मेरे पीसी बनाने है:
PBT_APMSUSPEND received
फिर जब पीसी दो संदेश एक के बाद एक पुनः आरंभ है और मैं साइन-इन मैं क्या डिबगर उत्पादन विंडो में देखेंगे रहे हैं:
PBT_APMRESUMESUSPEND received
PBT_APMRESUMEAUTOMATIC received
सब कुछ है कि मैं अब तक पाया है इंगित करता है कि आप कोई संकेत नहीं है कि क्या आप बाहर आ रहे हैं कि एक नींद की स्थिति या एक हाइबरनेट राज्य का। मैं अभी भी निलंबित होने पर या फ़ाइल और डिवाइस हैंडल के रूप में फिर से शुरू होने पर क्या करने की आवश्यकता है, इसके बारे में और अधिक शोध कर रहा हूं। मैंने संकेत देखा है कि COM बंदरगाहों को फ़ाइल हैंडल फिर से शुरू होने के बाद वैध नहीं हैं। उदाहरण के लिए डेटाबेस कनेक्शन के लिए मैं अन्य प्रक्रियाओं में इंटरफेस के बारे में भी अनिश्चित हूं।
मानक नींद और हाइबरनेट पावर प्रबंधन के अलावा, माइक्रोसॉफ्ट ने Connected Standby power state with Windows 8 and 8.1 पेश किया है जिसमें आवेदन के प्रकार के आधार पर कुछ एप्लिकेशन डिज़ाइन विध्वंस हैं।
डेस्कटॉप के प्रयोगों को विशिष्ट जुड़े अतिरिक्त के साथ एकीकृत करने का कोई अतिरिक्त कार्य की आवश्यकता है।
डेस्कटॉप गतिविधि मॉडरेटर (डीएएम) विंडोज घटक है जो सभी डेस्कटॉप अनुप्रयोगों को रोकता है और जुड़े हुए स्टैंडबाय के दौरान तृतीय-पक्ष सिस्टम सेवाओं के रनटाइम को थ्रॉटल करता है। का उद्देश्य डीएएम मौजूदा अनुप्रयोगों और सेवाओं के साथ मूल सॉफ्टवेयर संगतता बनाए रखना है, लेकिन नींद के दौरान बैटरी जीवन पर उनके प्रभाव को कम करें।
विंडोज़ डेस्कटॉप अनुप्रयोगों को डीएएम चरण पूर्ण होने के बाद जुड़े स्टैंडबाय के किसी भी हिस्से के दौरान चलने से रोकता है। विंडोज तीसरे पक्ष की सिस्टम सेवाओं को के बाद डीएएम चरण को पूरा करने के बाद थ्रॉटल मोड में निष्पादित करने की अनुमति देता है। इस मोड में, एक थर्ड-पार्टी सेवा चला सकती है, प्रत्येक 30 सेकंड में दीवार घड़ी के एक से अधिक सेकंड के लिए नहीं।
इंटेल से The Art of Graceful Application Suspension by Lynn Merrill लेकिन यह तिथि 2005 ऐसा नहीं सभी सामग्री Windows XP के बाद Windows से संबंधित हो सकता है Windows के तहत विद्युत प्रबंधन के साथ जुड़े विभिन्न विंडोज संदेश प्रकारों से निपटने के बारे में कुछ जानकारी है। Windows Vista PBT_APMQUERYSUSPEND
संदेश से शुरू होने वाले संदेश दस्तावेज़ में वर्णित संदेश अनुक्रम में कम से कम एक अब उपयोग किया गया संदेश नहीं है जिसका उपयोग यह अनुरोध करने के लिए किया गया था कि कोई एप्लिकेशन निलंबित करने में सक्षम था या नहीं, अब विंडोज द्वारा उपयोग नहीं किया जाता है। SetThreadExecutionState()
फ़ंक्शन अब यह इंगित करने के लिए उपयोग किया जाता है कि स्लीप या हाइबरनेट स्थिति में परिवर्तन के साथ थ्रेड को बाधित नहीं किया जा सकता है। पावर प्रबंधन राज्य संदेश परिवर्तनों के विवरण के लिए stackoverflow Can't catch sleep suspend messages (winxp) में उत्तरों देखें।
क्या आपके पास एक कोड उदाहरण है जो काम करता है, कृपया? (कुछ ऑनलाइन उदाहरणों की कोशिश की लेकिन वे घटना को आग लगने लगते नहीं हैं) –