使用 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);