2012-09-06 11 views
5

मैं विंडोज़ एप्लिकेशन में विंडोज अनलॉक इवेंट को ट्रैक करना चाहता हूं। यह कैसे किया जाता है? इसके लिए इस्तेमाल की जाने वाली घटना क्या है? क्या मुझे इसके लिए कोई नेमस्पेस आयात करने की ज़रूरत है?सी # विंडोज़ एप्लिकेशन में विंडोज अनलॉक इवेंट कैसे प्राप्त करें?

जबकि कोई उपयोगकर्ता विंडोज़ को अनलॉक करता है, तो एप्लिकेशन को कुछ कार्य करने की आवश्यकता होती है।

+0

की संभावित डुप्लिकेट: http://stackoverflow.com/questions/603484/checking-for-workstation-lock-unlock-change-with-c-sharp या इस http://stackoverflow.com/questions/44 9 80/कैसे-कर-मैं-प्रोग्रामेटिक रूप से निर्धारित-अगर-मेरा-वर्कस्टेशन-लॉक किया गया –

+0

उस लिंक का उत्तर चिह्न तक नहीं था। :( –

+0

मैंने एक और लिंक जोड़ा - स्टैक ओवरफ्लो पर इस प्रकार के प्रश्न के कई "उदाहरण" प्रतीत होते हैं। हालांकि, मैंने उनमें से एक को मेरे उत्तर के रूप में पोस्ट किया क्योंकि इसमें नमूना कोड शामिल था जो आपको उपयोगी लगेगा। –

उत्तर

10

जैसा कि इस स्टैक ओवरव्लो उत्तर में पोस्ट किया गया है: https://stackoverflow.com/a/604042/700926 आपको SystemEvents.SessionSwitch Event पर एक नज़र रखना चाहिए।

नमूना कोड भी निर्दिष्ट उत्तर में पाया जा सकता है।

मैंने अभी स्पिन के लिए संदर्भित StackOverflow answer में दिखाया गया कोड लिया है और ऐसा लगता है कि .NET Framework 4.5 के साथ विंडोज 8 आरटीएम पर काम करता है।

आपके संदर्भ के लिए, मैंने अभी कंसोल एप्लिकेशन का पूरा नमूना कोड शामिल किया है जिसे मैंने अभी इकट्ठा किया है।

using System; 
using Microsoft.Win32; 

// Based on: https://stackoverflow.com/a/604042/700926 
namespace WinLockMonitor 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      Microsoft.Win32.SystemEvents.SessionSwitch += new Microsoft.Win32.SessionSwitchEventHandler(SystemEvents_SessionSwitch); 
      Console.ReadLine(); 
     } 

     static void SystemEvents_SessionSwitch(object sender, Microsoft.Win32.SessionSwitchEventArgs e) 
     { 
      if (e.Reason == SessionSwitchReason.SessionLock) 
      { 
       //I left my desk 
       Console.WriteLine("I left my desk"); 
      } 
      else if (e.Reason == SessionSwitchReason.SessionUnlock) 
      { 
       //I returned to my desk 
       Console.WriteLine("I returned to my desk"); 
      } 
     } 
    } 
} 
+0

मैं उपयोग कर रहा हूं एक विंडोज़ एप्लिकेशन। मुझे 'माइक्रोसॉफ्ट। Win32.SystemEvents.SessionSwitch + = नया माइक्रोसॉफ्ट.Win32.SessionSwitchEventHandler (SystemEvents_SessionSwitch) जोड़ने की आवश्यकता है; ' –

+0

यह एक ठीक काम करता है। मैंने उपरोक्त कोड को फॉर्म की प्रारंभिक घटना के अंदर जोड़ा है। –

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