2011-06-08 16 views
12

में निष्क्रिय उपयोगकर्ताओं का पता लगाना यदि उपयोगकर्ता 5 मिनट के लिए निष्क्रिय है तो मैं अपने प्रोग्राम को रोकना चाहता हूं। निष्क्रिय से मेरा मतलब है कि उस समय के दौरान अपने माउस या उनके कीबोर्ड को दबाया नहीं है (प्रोग्राम के बाहर भी!)। कोई शुरुआती बिंदु?Winforms

उत्तर

10

एक टाइमर के भीतर आप GetLastInputInfo() को पी/आवेक कर सकते हैं जो वर्तमान सत्र में सभी प्रक्रियाओं में उपयोगकर्ता से इनपुट पता चला था, जो संख्या एमएस वापस कर देगा।

+0

मुझे जो चाहिए वह लगता है, लेकिन अजीब चीज यह है कि जब मैं अपना माउस ले जा रहा हूं तो LASTINPUTINFO केवल बढ़ता है। – Andrew

+4

यह अंतिम इनपुट का टिक-टाइम देता है, इसलिए यह ऊपर जाएगा, इसे पर्यावरण से घटाएं। टिककाउंट –

2

आप WndProc ओवरराइड और WM_IDLE संदेश

2

मैं GMA.UserActivityMonitor पुस्तकालय का उपयोग किया है कि कुछ समय पहले इस लक्ष्य को हासिल करने के लिए देखने के लिए कर सकता है।

6

यह सवाल बहुत एक पुराने सवाल के समान है:

.NET equivalent for GetLastInputInfo?

कौन सा एक अच्छा सी # में कुछ अलग विकल्पों के वर्णन लेख संदर्भित:

http://www.codeproject.com/KB/cs/uim.aspx

आप कोई आपत्ति नहीं है P/Invoke का उपयोग करके और विंडोज सिस्टम पर चलने तक सीमित होने के बाद, GetLastInputInfo() को कॉल करने के लिए P/Invoke का उपयोग करना संभवतः आप जो चाहते हैं उसे पूरा करने का सबसे आसान तरीका है।