मैं प्रोग्रामेटिक रूप से कुंजियों को दबाने के लिए Robot इंस्टेंस का उपयोग कर रहा हूं। उन कुंजियों को थोड़ी देर के लूप के अंदर एक वर्ग का उपयोग करके दबाया जाता है जो Thread का विस्तार करता है।

मेरे ऐप में केवल एक विंडो है, मुख्य विंडो।

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

ऐसा क्यों होता है?

यहाँ स्निपेट है:

try {
            Robot robot = new Robot(); 

            while(!stopped)
            {
               fireRandomKey(robot);
               Thread.sleep(1000);
            }

    } catch (AWTException e) { 
        e.printStackTrace(); 
    } catch (InterruptedException e) {
        e.printStackTrace();
    }
1
JaneLilep 5 जुलाई 2018, 13:03

1 उत्तर

सबसे बढ़िया उत्तर

यदि आपका लक्ष्य उपयोगकर्ता इंटरैक्शन का अनुकरण करना है, तो आपको महत्वपूर्ण ईवेंट भेजने से पहले उपयोगकर्ता माउस ईवेंट (उदाहरण के लिए JTextField में क्लिक करें) का अनुकरण करने के लिए रोबोट का उपयोग करना होगा।

इस तरह, आप बाहरी इंटरैक्शन से प्रतिरक्षित होंगे जो आपका ध्यान आकर्षित कर सकते हैं (डेस्कटॉप सूचनाएं, अन्य ऐप्स, आदि ...)

0
BluEOS 5 जुलाई 2018, 14:08