2010-08-16 10 views
5

मुझे पता होना चाहिए कि माउस या कीबोर्ड गतिविधि कब मौजूद है। मेरा एप्लिकेशन पृष्ठभूमि (ट्रे) में चलता है और मुझे इस गतिविधि को पहचानने की आवश्यकता होती है, भले ही मेरा ऐप फोकस में न हो।जावा कीबोर्ड/माउस गतिविधि (मेरे ऐप के बाहर भी)

मुझे यह जानने की आवश्यकता नहीं है कि किन कुंजी दबाए गए थे, लेकिन जब उन्हें दबाया जाता है।

क्या मैं जावा के साथ ऐसा कर सकता हूं? मैंने जेएनआई और सी ++/सी का उपयोग करके कुछ समाधान पढ़े हैं लेकिन वे ओएस विशिष्ट प्रतीत होते हैं। क्या इसका कोई आसान समाधान है जो विंडोज, लिनक्स और मैक के साथ काम करेगा?

धन्यवाद!

+1

बात इस तरह की के लिए, जरूरी प्लेटफ़ॉर्म-विशिष्ट है। –

+0

ठीक अद्यतन: तो, मुझे विंडोज़ (jintellitype) और लिनक्स (jxgrabkey) के लिए एक लाइब्रेरी मिली है। क्या किसी को मैक ओएसएक्स के लिए पता है? –

+0

मैं शायद यह कहने जा रहा हूं कि यह एक प्रश्न नहीं होने वाला है जिसके लिए आपको एक अच्छा जवाब मिलेगा। संक्षेप में आप चाहते हैं कि आपका प्रोग्राम एक प्रमुख लॉगर की तरह व्यवहार करे, और उन्हें आमतौर पर कर्नेल में खुद को हुक करना पड़ता है। जावा में ऐसा करने की शक्ति नहीं है, इसलिए आप भाग्यशाली आदमी से बाहर हैं। –

उत्तर

3

चूंकि जेएनआई की आवश्यकता है, जो ओएस विशिष्ट एपीआई पर निर्भर करता है, एकमात्र तरीका प्रत्येक समर्थित ओएस के लिए कार्यान्वयन होगा और आपके आवेदन में ओएस का पता लगाने के बाद गतिशील रूप से लोड होगा। के बाद से अलग ओएस प्लेटफॉर्म अलग अलग तरीकों से यह सुविधा प्रदान, और कुछ विन्यास भी यह बिल्कुल प्रदान नहीं हो सकता है

विंडोज Java Global Keyboard/Mouse Hook – JNI

+0

जोत्सी (कीबोर्ड/माउस हुक के मूल लेखक) की अनुमति के साथ, मैंने अपनी लाइब्रेरी साल पहले ली और एक नया संस्करण बनाया। कृपया नवीनतम रिलीज और उदाहरण [गिटहब पर] (https://github.com/kristian/system-hook) ढूंढें। साथ ही [ब्लॉग पोस्ट] पर लाइब्रेरी का विवरण (http://kra.lc/blog/2016/02/java-global-system-hook/)। –

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