如何以编程方式将键事件发送到Java App中的任何窗口/进程?

时间:2015-09-17 23:00:50

标签: java process window keyevent

使用Java应用程序,如何以编程方式将键事件(字母,数字,标点符号,箭头等)发送/触发到同一台机器上的窗口/进程?

1 个答案:

答案 0 :(得分:4)

假设您知道该窗口的位置,您可以使用java.awt.Robot

这会在屏幕上覆盖10,50的任何窗口中键入a。

Robot r = new Robot();
r.mouseMove(10, 50);
r.mousePress(InputEvent.BUTTON1_MASK);
r.mouseRelease(InputEvent.BUTTON1_MASK);
r.keyPress(KeyEvent.VK_A);
r.keyRelease(KeyEvent.VK_A);

如果您有一个窗口,您知道在10,400处覆盖10,50另一个窗口,而在400,400处覆盖另一个窗口,那么这将在不同窗口中键入x y和z。在我的测试中,我还需要一些延迟才能使其更可靠。

Robot r = new Robot();
r.mouseMove(10, 50);
r.mousePress(InputEvent.BUTTON1_MASK);
r.mouseRelease(InputEvent.BUTTON1_MASK);
Thread.sleep(500);
r.keyPress(KeyEvent.VK_X);
r.keyRelease(KeyEvent.VK_X);
Thread.sleep(500);
r.mouseMove(10, 400);
Thread.sleep(500);
r.mousePress(InputEvent.BUTTON1_MASK);
r.mouseRelease(InputEvent.BUTTON1_MASK);
Thread.sleep(500);
r.keyPress(KeyEvent.VK_Y);
r.keyRelease(KeyEvent.VK_Y);
Thread.sleep(500);
r.mouseMove(400, 400);
Thread.sleep(500);
r.mousePress(InputEvent.BUTTON1_MASK);
r.mouseRelease(InputEvent.BUTTON1_MASK);
r.keyPress(KeyEvent.VK_Z);
r.keyRelease(KeyEvent.VK_Z);