使用 robot.keyPress 键入随机字符的循环
A loop that would type a random character using robot.keyPress
我正在尝试使用 robot.keyPress 写入随机字符。
至此我打开了记事本,在里面写了字,保存了。如果我 运行 这个程序在循环中,它总是会用相同的名称保存记事本,因此会替换以前的记事本。
我想保存多个记事本(具有不同的名称),可能是在保存之前输入一个随机字母。
要让 Robot
以快速而肮脏的方式执行随机按键,您需要首先列出可接受的 KeyEvent 常量(a-zA-Z0-9 等)假设您将该列表放在一起:
int[] keys = new int[]{KeyEvent.VK_A, KeyEvent.VK_B, ... }; // Your list of KeyEvent character constants here, adapt as desired.
// Start optional for loop here if you want more than 1 random character
int randomValue = ThreadLocalRandom.current().nextInt(0, keys.length);
Robot.keyPress(keys[randomValue]);
根据您的需要进行调整。
这个问题与 java.awt.robot 无关,更多的是关于随机值生成。一个简单的解决方案可能是这样。
Random rnd = new Random();
int key = KeyEvent.VK_UNDEFINED;
while (key < KeyEvent.VK_A || key > KeyEvent.VK_Z) {
key = rnd.nextInt();
}
robot.keyPress(key);
为了避免无用的循环使用这个:
Random rnd = new Random();
final int range = (KeyEvent.VK_Z + 1) - KeyEvent.VK_A;
int key = Math.abs(rnd.nextInt()) % range;
robot.keyPress(key);
我正在尝试使用 robot.keyPress 写入随机字符。
至此我打开了记事本,在里面写了字,保存了。如果我 运行 这个程序在循环中,它总是会用相同的名称保存记事本,因此会替换以前的记事本。
我想保存多个记事本(具有不同的名称),可能是在保存之前输入一个随机字母。
要让 Robot
以快速而肮脏的方式执行随机按键,您需要首先列出可接受的 KeyEvent 常量(a-zA-Z0-9 等)假设您将该列表放在一起:
int[] keys = new int[]{KeyEvent.VK_A, KeyEvent.VK_B, ... }; // Your list of KeyEvent character constants here, adapt as desired.
// Start optional for loop here if you want more than 1 random character
int randomValue = ThreadLocalRandom.current().nextInt(0, keys.length);
Robot.keyPress(keys[randomValue]);
根据您的需要进行调整。
这个问题与 java.awt.robot 无关,更多的是关于随机值生成。一个简单的解决方案可能是这样。
Random rnd = new Random();
int key = KeyEvent.VK_UNDEFINED;
while (key < KeyEvent.VK_A || key > KeyEvent.VK_Z) {
key = rnd.nextInt();
}
robot.keyPress(key);
为了避免无用的循环使用这个:
Random rnd = new Random();
final int range = (KeyEvent.VK_Z + 1) - KeyEvent.VK_A;
int key = Math.abs(rnd.nextInt()) % range;
robot.keyPress(key);