Java 机器人&x27;s keyPress()不';I don’我不能如愿工作

Java 机器人&x27;s keyPress()不';I don’我不能如愿工作,java,sendkeys,awtrobot,Java,Sendkeys,Awtrobot,我需要Java中机器人类的帮助。我有以下代码: public static void main(String[] args) throws AWTException { Robot r = new Robot(); r.delay(3000); r.keyPress(KeyEvent.VK_7); r.delay(5000); r.keyRelease(KeyEvent.VK_7); } 据我所知,此代码必须按“7”,并在5秒后释放。但它按下“7”,然后

我需要Java中机器人类的帮助。我有以下代码:

public static void main(String[] args) throws AWTException {
    Robot r = new Robot();
    r.delay(3000);
    r.keyPress(KeyEvent.VK_7);
    r.delay(5000);
    r.keyRelease(KeyEvent.VK_7);
}
据我所知,此代码必须按“7”,并在5秒后释放。但它按下“7”,然后立即释放。因此,
Robot
类不会在一段时间后按下并释放,而是触发一次键


如何让我的Java应用程序按住一个键几秒钟,然后释放?

因此,在仔细研究了这个主题之后,我得出结论,
Java.awt.Robot
类没有“按住”键的功能

类似问题()的答案建议我创建一个不断重复
keyPress
事件的循环,但我并不满意,因为我需要一个真正的按键模拟

我也尝试过使用,但没有成功:

Thread.sleep(3000);
键盘.sendKeyDown(KeyEvent.VK_7);
睡眠(5000);
键盘.sendKeyUp(KeyEvent.VK_7);
最后,我通过电子邮件解决了我的问题。但是这里有一个重要的提示:

我正在为一个游戏开发一个机器人,而不是试图在任何文本编辑器中按住一个键,看看它是如何不断地用字符填充行的。若你们试图在一个文本编辑器中测试按住按钮,那个么它将不起作用,因为文本编辑器重复按键的工作方式不同于游戏中的普通键盘事件监听器。但这是一个不同的话题

解决方案:
键盘=新键盘();
睡眠(3000);
键盘。winKeyPress(扫描码。DIK_7);
睡眠(5000);
键盘。winKeyRelease(扫描码。DIK_7);

另一件需要注意的事情是,有时,要使bot在游戏中工作,您需要以管理员身份运行应用程序,否则它可能无法工作。

您到底有什么问题?你说它只按一次是什么意思,因为你只按一次键。对不起,我的问题不对。我已经改正了。所以我的意思是机器人不会把钥匙保持在“向下的位置”。在不使用keyRelease()命令的情况下按下并释放键盘有可能是您的键盘吗?我的意思是,如果您手动按住
7
键一秒钟,然后立即释放它,您会得到不同的结果吗?正如我所理解的,您希望按住该键一段时间,可能此链接会有所帮助: