目前为了在我的应用程序中模拟鼠标点击,我使用了 Java 的 Robot 类。它似乎使用桌面作为边界/网格来了解 Point 在屏幕上的映射位置。
例子:
Robot bot = new Robot();
bot.mouseMove(1099,22); //Manually collected point..
bot.delay(100);
bot.mousePress(InputEvent.BUTTON1_MASK);
bot.mouseRelease(InputEvent.BUTTON1_MASK);
Run Code Online (Sandbox Code Playgroud)
目标:
机器人强制使用我的鼠标/光标,我希望能够在我的计算机上做其他事情,而这段代码运行时只点击我编程的 Java 应用程序。
有没有办法用 JNA 做到这一点?我不关心支持除 Windows 之外的任何操作系统,但由于遗留技术,仍然需要成为 Java 应用程序。
以下代码在target相对于 的 (x, y) 处单击组件target。
private static void click(Component target, int x, int y)
{
MouseEvent press, release, click;
Point point;
long time;
point = new Point(x, y);
SwingUtilities.convertPointToScreen(point, target);
time = System.currentTimeMillis();
press = new MouseEvent(target, MouseEvent.MOUSE_PRESSED, time, 0, x, y, point.x, point.y, 1, false, MouseEvent.BUTTON1);
release = new MouseEvent(target, MouseEvent.MOUSE_RELEASED, time, 0, x, y, point.x, point.y, 1, false, MouseEvent.BUTTON1);
click = new MouseEvent(target, MouseEvent.MOUSE_CLICKED, time, 0, x, y, point.x, point.y, 1, false, MouseEvent.BUTTON1);
target.dispatchEvent(press);
target.dispatchEvent(release);
target.dispatchEvent(click);
}
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1964 次 |
| 最近记录: |