0

人間のような方法で、Java でキーの押下をシミュレートするプログラムを開発しています。目的は、x 秒ごとにランダムなキー押下を送信することです (x は 2 つの整数の間の乱数です)。これが私がこれまでに持っているコードです:

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();
            }
        }
    }
}

私が達成したいのは、Keyevent.VK_SPACE をランダムにすることです。そのため、スペースバーの代わりに、リストの任意のキーにすることができます (たとえば、AD からランダムなキーを押します)。どうすればこれを行うことができますか?私がすでに持っているプログラミングの知識では、論理的な解決策を思いつきません (悲しいことに最小限です)。

ご回答ありがとうございます。

4

3 に答える 3

0

33 と 126 の間の乱数を生成するだけです。次に、2 つの char ごとにランダムに 32 を追加します。32 はスペースです。65 ~ 90 は大文字、97 ~ 122 は小文字です。

良いリソース: http://www.asciitable.com/

乱数を生成するには、次のようにします。

Random randomGenerator = new Random();
int ran = randomGenerator.nextInt(126 - 33);
ran += 33;

次に、走ったのはあなたのランダムなキャラクターになります。ループして、それを数回行うことができます。

KeyEvent.VK_SPACE を使用する必要さえありません。使用する場合:

System.out.println(KeyEvent.VK_SPACE);

「32」が返ってきます。それはASCIIチャートに対応しています。それを使用してください。

于 2013-10-11T19:31:01.547 に答える
0

KeyEvent はキーのプレーンな整数を定義するため、KeyEvent.VK_X の代わりにそれらを使用できます。その場合、ランダムな整数を取得することは問題になりません。 キーコードについては、 http:
//docs.oracle.com/javase/1.4.2/docs/api/java/awt/event/KeyEvent.html にアクセスしてください。

于 2013-10-11T19:30:58.157 に答える