【问题标题】:How to use Java Robot to enter an increasing sequence of numbers using robot.keypress?java - 如何使用Java Robot使用robot.keypress输入递增的数字序列?
【发布时间】:2022-10-30 20:26:00
【问题描述】:

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

1, 2, 3, 4, 5, 6, 7, 8, 9, 10 等。但我还需要它按 Enter,然后按向上箭头,然后键入,然后按 Enter,然后按向上箭头等。 所以 1 输入向上箭头 2 输入向上箭头等。

或者,它也可以只使用回车键,如“age -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);
    

}


}

【问题讨论】:

  • 你想精确计算什么?
  • 我在CK3中使用它进行一些调试。所以我需要它输出“年龄-100(1-100000),每行后按回车。

标签: java awtrobot


【解决方案1】:

经过几天的捣碎代码,我实际上解决了这个问题。然而,它非常,非常杂乱无章,大约每 300 行滑动一次。此外,如果您将 ThreadSleeps 降低到 10 毫秒以下,它会崩溃大约 200 行。它需要两个 ThreadSleeps 或几乎立即崩溃。

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

}




}

【讨论】:

    【解决方案2】:

    实际上这回答太晚了,但可能会帮助其他人可能是最简单的方法:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-02-06
      • 2015-11-10
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-01-29
      • 1970-01-01
      相关资源
      最近更新 更多