Java Awt робот изменяет скорость мыши Windows
каждый раз, когда я использую робота для перемещения мыши, он сбрасывает скорость мыши Windows. Это действительно раздражает, и мне было интересно, знает ли кто-нибудь, как это исправить. Вот в основном код, с которым я возился:
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 нажмите кнопку Пуск, введите "Блокнот", откройте программу "блокнот", потом типа "я пишу".
robotType () - это просто быстрая функция, которую я сделал, которая преобразует строку в серию клавиатуры прессы / релизы.
2 ответов
Это похоже на ошибку windows, так как ничто из того, что вы сделали, не изменяет скорость мыши. Похоже, вам не повезло...
не исправление, а обходной путь:
С JNA вы можете получить / установить скорость мыши (убедитесь, что вы работаете в windows). Когда программа запускается, считывайте скорость мыши. Тогда после каждого 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);
}
//[...]
}