2009-06-19 13 views
6

मेरे पास एक ऐसा एप्लिकेशन है जो विंडोज एक्सपी मशीन पर हर घंटे चलता है। ठीक से चलाने के लिए, इस एप्लिकेशन को वर्तमान सत्र को अनलॉक करने की आवश्यकता है। इसलिए मैं सोच रहा था कि क्या मौजूदा विंडोज सत्र लॉक किया गया है या सी # और .NET 3.5 के साथ नहीं है।यह निर्धारित करने के लिए कि वर्तमान विंडोज सत्र लॉक है या नहीं?

अद्यतन: एप्लिकेशन सत्र नोटिफिकेशन घटनाओं को नहीं सुन सकता है। आवेदन को किसी भी समय लात मार दिया जा सकता है और पूरा होने पर समाप्त हो जाता है।

धन्यवाद!

+0

यह क्या करता है कि सत्र लॉक होने पर यह नहीं चल सकता है? – jmucchiello

उत्तर

1

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

+0

अंडेहेडकेफ़ लिंक 404'd – hometoast

+0

कैश लिंक 404'd है – jnm2

0

पर थ्रेड में एक उदाहरण है, मैंने एक बार स्क्रीन सेवर चल रहा था या नहीं, यह निर्धारित करने के लिए मैंने GetForegroundWindow() फ़ंक्शन का उपयोग किया था। यदि वापसी मूल्य NULL था, तो स्क्रीन सेवर (या, संभवतः, लॉक वर्कस्टेशन) सक्रिय था। ध्यान दें कि यह विंडोज एनटी के शुरुआती दिनों में था, ऐसा करने के लिए दस्तावेज नहीं है, और इस बात की कोई गारंटी नहीं है कि यह आज भी वही काम करेगा।

Win32 API संदर्भ को देखते हुए, आप वर्तमान में सक्रिय डेस्कटॉप के HDESK पाने के लिए OpenInputDesktop() की तरह कुछ का उपयोग करने में सक्षम हो सकता है। यदि आप डेस्कटॉप पर हैंडल नहीं प्राप्त कर सकते हैं या यदि यह आपके थ्रेड डेस्कटॉप से ​​अलग है, तो आपका ऐप डेस्कटॉप में चल रहा है जो सक्रिय नहीं है (और वर्कस्टेशन शायद स्क्रीनसेवर स्थिति में है या लॉक है)। कोई गारंटी नहीं है कि यह विधि काम करेगी, लेकिन यह जांच के लायक हो सकती है।

0

मैंने एक समान प्रश्न here का उत्तर दिया। मुझे लगता है कि लॉक किए गए राज्य का पता लगाने के लिए विधियों 2 & 3 को बढ़ाया जा सकता है।

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

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