【问题标题】:How to make Java Robot hold down a key?如何让 Java Robot 按住一个键?
【发布时间】:2023-03-14 00:58:01
【问题描述】:

我想使用 Java 机器人按住某个键一段时间。我已经阅读了其他类似的主题,但它们都不起作用。重复按键只会导致按键不松开。

到目前为止,这是我的代码(它不起作用,因为它只按一次键):

new Thread(new Runnable() {
         public void run() {
             final int keyP = 0; //the key to press

                            final int duration = 2000 //2 seconds
                            Robot r = null;
                            try {
                                r = new Robot();
                            } catch (AWTException e1) {
                                                        e1.printStackTrace();
                            }
                            r.keyPress(keyP);
                            r.delay(duration); //Thread.sleep does the same thing
                            r.keyRelease(keyP);

                            }
                 }).start();

【问题讨论】:

  • 基本上你所做的和按住键盘上的键是一样的。有一个初始延迟,然后键将重复,直到它被释放。您能否更好地解释您正在尝试做什么...?

标签: java multithreading key awtrobot


【解决方案1】:

试试:

boolean keepPressing=true;
long startTime = System.currentTimeMillis();
long endTime=null;
long totalTime=null;

while(keepPressing){
    r.keyPress(keyP);
    endTime=System.currentTimeMillis();
    totalTime = endTime - startTime;
    if(totalTime>1999) {
      keepPressing=false;
      r.keyRelease(keyP);
    }
}

【讨论】:

  • 感谢您的快速回复,但由于某种原因,这会输入比想要的更多的字母。
  • keyP不是定义为一键吗?我不明白为什么它会输入不同的字母?
  • 我的意思是它会按keyP多次。
猜你喜欢
  • 2017-04-30
  • 2014-05-03
  • 2020-06-14
  • 2017-02-19
  • 2013-04-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多