2011-12-27 26 views
5

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

मैं एक स्क्रीनसेवर नहीं लिख रहा हूँ, मैं इतना है कि जब आप अपने डेस्कटॉप के एक नामित कोने करने के लिए अपने माउस ले जाएँ एक आवेदन में लिखा है, स्क्रीनसेवर आता है पर ... मैं जोड़ने के बारे में जानना चाहते हैं जब आप उस कोने में माउस ले जाते हैं स्क्रीनसेवर

के आकस्मिक शुरूआत को रोकने के लिए यदि ऐसा है तो कैसे करने के लिए एक देरी?

+0

स्क्रीनसेवर का प्रबंधन करने के लिए एक एपीआई है। क्या आप इसके बारे में बात कर रहे हैं? –

+0

निम्न स्तर के माउस हुक का उपयोग करके अपने "हॉट कॉर्नर" प्रकार का एप्लिकेशन लिखना। मेरे पास यह सब काम कर रहा है, माउस को "सक्रियण क्षेत्र" – CybrHwk

+2

में एक बार स्क्रीनसेवर लॉन्च करने में देरी करने का कोई तरीका ढूंढना, कोई स्क्रीन सेवर जो माउस की स्थिति पर ध्यान देता है, बिल्कुल कोई समझ नहीं आता है। यह * सक्रिय नहीं होता है * जब कोई मनुष्य इसे चारों ओर ले जा रहा है। थोड़ा सा सोचो। –

उत्तर

4

इसलिए जब आप अपने डेस्कटॉप के एक नामित कोने करने के लिए अपने माउस ले जाते हैं कि, स्क्रीनसेवर पर आता है ...

जब माउस वहाँ हो जाता है, एक बूलियन और एक टाइमर सेट। किसी भी माउस कार्रवाई को बुलियन साफ़ करें।
केवल जब टाइमर आग और आपका ध्वज अभी भी है, आगे बढ़ें।

दूसरे शब्दों में, एक छोटी सी राज्य मशीन का उपयोग करें।

+3

+1 – dthorpe

+0

इस समाधान के लिए चला गया, इलाज, आपकी मदद :) – CybrHwk

0

यहाँ छद्म कोड है

var CurrentMouse = ...; // Get mouse coordinates. 
    ThreadPool.QueueUserWorkItem(  
    (s) => { 
      Thread.Sleep(500); // Half a second 

     // if (Mouse did not move) 
     //  Launch Screen Saver 

    }); 

संपादित करें: नोट इस जीयूआई परत या धागा लॉकिंग को वापस लागू करने के लिए बात नहीं करता है। C# MultiThreading Using ThreadPool, Anonymous Delegates and Locks नामक मेरे ब्लॉग आलेख पर इस स्थिति के लिए प्रेरणा देखें जो उचित लॉकिंग दिखाती है।

+0

एक और वास्तव में प्रासंगिक नहीं जवाब देने के लिए एक लिंक है उसके लिए धन्यवाद काम करता है "इस के लिए एक धागा का उपयोग नहीं करते" के लिए आपका ब्लॉग। –