如何使用Java Robot使用Robot.keypress输入递增的数字序列



我正试图使用Java编写一个非常简单的脚本:我想把光标放在调试控制台中,让它键入一系列数字。例如

1、2、3、4、5、6、7、8、9、10等。但我也需要它按回车键,然后按向上箭头,然后键入,然后输入,然后按上箭头,等等。因此1输入上箭头2输入上箭头等

或者,它也可以只使用回车键,如"回车"键;年龄-100岁(1-100000(。

这是我试图使之工作的代码,但我不知道如何使其发挥作用。

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.event.KeyEvent;
public class robot {
public static void main(String[] args) throws AWTException, InterruptedException{
// TODO Auto-generated method stub
Robot r = new Robot();
String i = "";
Thread.sleep(2000);
String text = "1";
StringSelection stringSelection = new StringSelection(text);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, stringSelection);
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);

}

}

经过几天的代码混合,我实际上解决了这个问题。然而,它非常混乱,大约每300行就滑一次。此外,如果你将ThreadSleeps降低到10ms以下,它会崩溃大约200行。它需要两个ThreadSleep,否则几乎立即崩溃。

import java.awt.AWTException;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.Clipboard;
import java.awt.datatransfer.StringSelection;
import java.awt.event.KeyEvent;
import java.util.concurrent.TimeUnit;
public class robot {
static int i;
public static void main(String[] args) throws AWTException, InterruptedException{
// TODO Auto-generated method stub
for (int i=39000; i< 40000; i+=1) {
String str = "age -100 " + i;
Robot r = new Robot();
Thread.sleep(10);
String text = str;
StringSelection stringSelection = new StringSelection(text);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
clipboard.setContents(stringSelection, stringSelection);
Thread.sleep(10);
Robot robot = new Robot();
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_ENTER);
robot.keyRelease(KeyEvent.VK_ENTER);
} 
}


}

实际上这是一个太迟的答案,但可能会帮助其他人。所以,可能最简单的方法:

Robot r = new Robot();
int KeyNum = KeyEvent.VK_1;
for(int i = 0; i < 10; i++) {
r.keyPress(KeyNum);
Thread.sleep(1000);
r.keyRelease(KeyNum);
KeyNum++;
}

最新更新