2012-04-03 20 views
6

बदलता है हर बार जब मैं माउस को स्थानांतरित करने के लिए रोबोट का उपयोग करता हूं, तो यह विंडोज माउस की गति को रीसेट करता है। यह वास्तव में निपटने के लिए परेशान है, और मैं सोच रहा था कि अगर कोई इसे ठीक करने के बारे में जानता है।जावा अल्ट रोबोट विंडोज माउस स्पीड

Robot robot = new Robot(); 
robot.mouseMove(10, 1070); 
robot.delay(300); 
robot.mousePress(InputEvent.BUTTON1_MASK); 
robot.mouseRelease(InputEvent.BUTTON1_MASK); 
robot.delay(300); 
robotType("notepad"); 
robot.keyPress(KeyEvent.VK_ENTER); 
robot.keyRelease(KeyEvent.VK_ENTER); 
robot.delay(400); 
robotType("I am writing this."); 

यह क्या करता है essentaily प्रारंभ बटन, प्रकार "नोटपैड", खुले नोटपैड, तो प्रकार "मैं इस लिख रहा हूँ" पर क्लिक करें है: यहाँ मूल रूप से कोड मैं चारों ओर के साथ खिलवाड़ कर रहा हूँ।

रोबोट टाइप() केवल एक त्वरित कार्य है जो मैंने स्ट्रिंग को कीबोर्ड प्रेस/रिलीज़ की एक श्रृंखला में परिवर्तित कर दिया है।

उत्तर

1

यह एक विंडोज़ बग प्रतीत होता है, क्योंकि आपने जो कुछ भी किया है वह मूल रूप से माउस की गति को बदल देता है। ऐसा लगता है तुम भाग्य से बाहर हो सकता ...

0

नहीं ठीक है, लेकिन एक वैकल्पिक हल:

JNA के साथ

आप कर सकते हैं/माउस-गति सेट (सत्यापित करें कि आप खिड़कियों पर चल रहे हैं)। जब आपका प्रोग्राम शुरू हो रहा है, तो माउस-स्पीड पढ़ें। फिर प्रत्येक robot.mouseMove() उस मान को पुनर्स्थापित करने के बाद।

आप जोड़ने की आवश्यकता होगी jna.jar और jna-platform.jar यहां पाया जा सकता है जो: https://github.com/java-native-access/jna/tree/master/dist

interface User32 extends com.sun.jna.platform.win32.User32 { 

    User32 INSTANCE = (User32) Native.loadLibrary(User32.class, 
      W32APIOptions.DEFAULT_OPTIONS); 

    boolean SystemParametersInfo(
      int uiAction, 
      int uiParam, 
      Object pvParam, // Pointer or int 
      int fWinIni 
    ); 
} 

public static void main(String[] args) throws AWTException { 
    Pointer mouseSpeedPtr = new Memory(4); 
    Integer mouseSpeed = User32.INSTANCE.SystemParametersInfo(0x0070, 0, mouseSpeedPtr, 0) 
      ? mouseSpeedPtr.getInt(0) : null; 

    //[...] 

    rob.mouseMove(10, 1070); 
    if (mouseSpeed != null) { 
     User32.INSTANCE.SystemParametersInfo(0x0071, 0, mouseSpeed, 0x02); 
    } 

    //[...] 
}