2009-03-20 9 views
6

मेरा लक्ष्य जावा का उपयोग कर सिस्टम निगरानी अनुप्रयोग बनाना है। मैं जानना चाहता हूं कि कोई उपयोगकर्ता विंडोज पीसी पर गतिविधि कब कर रहा है। 08:15 गतिविधिविंडोज पर चल रहे जावा सेवा के साथ उपयोगकर्ता गतिविधि का पता कैसे लगाया जाए?

09:12 - - 10:29 गतिविधि

12:24 - 15:34 गतिविधि

मैं

08:00: परिणाम कुछ इस तरह होगा मुझे किसी अन्य जानकारी में दिलचस्पी नहीं है (कौन सी कुंजी दबाई गई थी, आवेदन किया गया था, इत्यादि)। केवल उपयोगकर्ता गतिविधि।

क्या यह जावा में भी संभव है? मैं अपने जावा एप्लिकेशन को एक सेवा के रूप में चलाने की योजना बना रहा हूं। लेकिन जब उपयोगकर्ता कंप्यूटर का उपयोग करता है तो ईवेंट प्राप्त करने के लिए, मुझे नहीं पता कि कहां से शुरू करना है।


[संपादित करें] आगे स्पष्टीकरण: मैं में विवरण गतिविधि के, केवल कि एक उपयोगकर्ता माउस ले जाया गया या एक चाबी का बटन दबा दिया दिलचस्पी नहीं है। मुझे परवाह नहीं है कि कौन सी कुंजी दबाई गई थी, जब तक मुझे पता चले कि किसी एप्लिकेशन में कहीं भी एक कुंजी दबाई गई थी। मुझे कुंजी दबाए और माउस आंदोलन को छोड़कर किसी भी अन्य गतिविधि की परवाह नहीं है (उदाहरण के लिए, यदि यूएसबी पोर्ट में यूएसबी कुंजी डाली जाती है तो मुझे कोई दिलचस्पी नहीं है)।

+0

क्या आप अपना नमूना आउटपुट संपादित कर सकते हैं और "गतिविधि" को प्रतिस्थापित कर सकते हैं जिसे आप वास्तव में देखना चाहते हैं? – OscarRyz

+0

मैं "गतिविधि" से अधिक विस्तार नहीं चाहता हूं। मुझे गतिविधि के प्रकार को जानने में कोई दिलचस्पी नहीं है। बस "कुछ हुआ"। –

+0

स्व-विरोधाभासी - एक बार जब आप कहते हैं "मुझे किसी अन्य जानकारी में दिलचस्पी नहीं है (कुंजी दबाया गया है, आवेदन किया गया है, आदि)।" फिर आप कहते हैं, "मुझे भी दबाए गए और माउस आंदोलन को छोड़कर किसी अन्य गतिविधि की परवाह नहीं है" – talonx

उत्तर

2

के लिए आप एक ऐसी सेवा से सीधे उपयोगकर्ता गतिविधि की निगरानी नहीं कर सकते। सेवा उपयोगकर्ताओं की गतिविधियों से एक अलग विंडो स्टेशन में चल रही है और इसलिए उस गतिविधि में शामिल होने का कोई तरीका नहीं होगा (फिल्टर ड्राइवरों को छोड़कर जिन्हें सी में लिखा जाना चाहिए)।

तो आपको एक क्लाइंट एप्लिकेशन की आवश्यकता होगी जो उपयोगकर्ता के डेस्कटॉप में चलता है और कीबोर्ड और माउस गतिविधि में हुक करता है। आप जेएनआई का उपयोग कर विंडोज एपीआई SetWindowsHookEx (निम्न स्तर के कीबोर्ड और माउस हुक के लिए) में दो कॉल के माध्यम से ऐसा करेंगे। गतिविधि की निगरानी करने के लिए एप्लिकेशन को संदेशों के लिए कीबोर्ड और माउस हुक को संसाधित करने की आवश्यकता होगी।

आप रजिस्ट्री की रन कुंजी में प्रवेश जोड़कर एप्लिकेशन को ऑटो-स्टार्ट के रूप में लॉन्च कर सकते हैं या आप ईवेंट पर सत्र लॉग के लिए अपनी सेवा मॉनीटर और launch the application से प्राप्त कर सकते हैं। फिर उपयोगकर्ता सत्र एप्लिकेशन या तो जानकारी को संसाधित कर सकता है या इसे पाइप या सॉकेट के माध्यम से सेवा में भेज सकता है।

+0

धन्यवाद। Google पर खोज के बाद, मुझे कुछ जेएनआई कोड मिला जो सेटविंडोशूकएक्स() का उपयोग करता है जो मैं ढूंढ रहा हूं। –

1

'उपयोगकर्ता गतिविधि' से आपका क्या मतलब है? आपको उस शब्द को ठीक से समाधान के बारे में सोचने के लिए पहले परिभाषित करने की आवश्यकता है, खासकर जब आप कहते हैं कि "कुंजी दबाया गया है, एप्लिकेशन का उपयोग किया गया है, आदि" गतिविधियां नहीं हैं

0

यह सीधे जावा मंच

द्वारा समर्थित नहीं है यदि आप एक नेट विकल्प का पता लगाने के यह एक बहुत आसान होगा।

खोजें Capture global user input in .net

1

आप इस SWT Win32 Extension को आजमा सकते हैं। यह आपको विंडोज़ पर जावा से कीबोर्ड और माउस हुक सेट करने की अनुमति देता है।