【发布时间】:2015-12-14 23:14:40
【问题描述】:
使用 Java 应用程序,我如何以编程方式将关键事件(字母、数字、标点符号、箭头等)发送/触发到同一台机器上的窗口/进程?
【问题讨论】:
标签: java process window keyevent
使用 Java 应用程序,我如何以编程方式将关键事件(字母、数字、标点符号、箭头等)发送/触发到同一台机器上的窗口/进程?
【问题讨论】:
标签: java process window keyevent
假设您知道该窗口的位置,您可以使用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);