Java中模拟随机键事件的键盘
我正在开发一个用Java模拟按键的程序,以一种类似人类的方式。目标是每x秒发送一次随机按键(x是两个整数之间的随机数)。以下是我目前掌握的代码:
public class AutoKeyboard {
public static int randInt(int min, int max) { // Method to generate random int
int randomNum = rand.nextInt((max - min) + 1) + min;
return randomNum;
}
public static void main(String[] args) throws InterruptedException {
int running = 1;
while (running == 1) {
try {
int delay = randInt(336415,783410); // Generates random int between two integers
Robot robot = new Robot();
Thread.sleep(delay); // Thread sleeps for x (random int) milliseconds
robot.keyPress(KeyEvent.VK_SPACE); // Simulating press of space bar
} catch (AWTException e) {
e.printStackTrace();
}
}
}
}
我想实现的是关键事件。VK_空格是随机的,因此它可以是列表中的任意键,而不是空格键(例如,它会按a-D中的随机键)。我该怎么做呢?用我已有的编程知识,我想不出一个合乎逻辑的解决方案(遗憾的是,这是最低限度的)
感谢您的回复
# 1 楼答案
由于KeyEvent为键定义了纯整数,因此可以使用它们代替KeyEvent。VK_X。 得到一些随机整数应该不是问题。
请访问http://docs.oracle.com/javase/1.4.2/docs/api/java/awt/event/KeyEvent.html获取密钥码
# 2 楼答案
你可以定义一个数组(或者一个列表,如果你愿意的话)somewere(
final static
就好了),包含所有你想要按下的键。 这可能相当冗长,但可以让您灵活地使用所需的任何密钥:对于共享相同ASCII值的常数,甚至可以使用相应的字符:
然后从该数组中选择一个随机密钥代码:
此外,我发现您缺少一个
robot.keyRelease
,应该在robot.keyPress
之后完成:# 3 楼答案
我只会生成一个33&;之间的随机数;126.然后每两个字符随机添加一个32。32是一个空间。65-90是大写,97-122是小写
好资源:http://www.asciitable.com/
要生成一个随机数,我会:
那你的随机角色就是ran。你可以循环几次
你甚至不需要使用KeyEvent。VK_空间。如果您使用:
你会得到“32”的回报。这对应于ASCII图表,只需使用它