如何以编程方式将按键事件发送到 Java 应用程序中的任何 window/process?
How to programmatically send a key event to any window/process in a Java App?
使用 Java 应用程序,我如何以编程方式 send/trigger 键事件(字母、数字、标点符号、箭头等)到同一台机器上的 window/process?
假设您知道 window 的位置,您可以使用 java.awt.Robot
这会在屏幕上 window 覆盖 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);
如果您有一个 window,您知道在 10,400 处覆盖另一个 10,50,在 400、400 处覆盖另一个,那么这将在不同的 windows 中键入 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);
使用 Java 应用程序,我如何以编程方式 send/trigger 键事件(字母、数字、标点符号、箭头等)到同一台机器上的 window/process?
假设您知道 window 的位置,您可以使用 java.awt.Robot
这会在屏幕上 window 覆盖 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);
如果您有一个 window,您知道在 10,400 处覆盖另一个 10,50,在 400、400 处覆盖另一个,那么这将在不同的 windows 中键入 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);