Java - 如何在桌面 1 和桌面 2 上生成点击?
Java - how to generate click on desktop 1 and desktop 2?
我有一个带有 2 个显示器的 KIOSK 连接到一台 PC 以解决依赖性和第三方兼容性问题,PC 必须在启动时启动,如下所示:
a) Google Chrome 在两个屏幕上都处于信息亭模式(无法访问其他应用程序)
b) Firefox、Opera 不在 kiosk 模式下,但必须 运行 隐藏在 Google 后面 Chrome 用于某些打印作业
问题:
但在每次启动时,Firefox、Opera 始终保持在 Google Chrome 之上,即使它们不是以 kiosk 模式启动的。
我在启动时编写了 Java 代码来触发一些点击,因此前端只显示 Google Chrome 但它不起作用。
任何人都可以修复代码吗?我做错了什么?我需要在屏幕 1 (1024x768)、屏幕 2 (1280x720) 上发送连发点击。
import java.awt.DisplayMode;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.event.InputEvent;
public class kiosk {
public static void main(String[] args) {
try {
Robot robot = new Robot();
// Screen Adjust
robot.setAutoDelay(500);
robot.mouseMove(1270, 400);
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
// Screens
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
for(GraphicsDevice curGs : gs) {
DisplayMode dm = curGs.getDisplayMode();
System.out.println(dm.getWidth() + " x " + dm.getHeight());
}
} catch (Exception e) {
System.out.println(e);
}
}
}
它有效!
import java.awt.DisplayMode;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.event.InputEvent;
public class kiosk {
public static void main(String[] args) {
try {
// Screens
int ScreenID = 0;
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
for(GraphicsDevice curGs : gs) {
// Get the Displays
DisplayMode dm = curGs.getDisplayMode();
int x = dm.getWidth();
System.out.println(ScreenID + " :" + dm.getWidth() + " x " + dm.getHeight());
// Burst fire now
Robot robot = new Robot();
robot.setAutoDelay(500);
if(ScreenID>0) {
robot.mouseMove(1280 + (x/13), 70);
} else {
robot.mouseMove(x/13, 70);
}
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
ScreenID++;
}
} catch (Exception e) {
System.out.println(e);
}
}
}
我有一个带有 2 个显示器的 KIOSK 连接到一台 PC 以解决依赖性和第三方兼容性问题,PC 必须在启动时启动,如下所示:
a) Google Chrome 在两个屏幕上都处于信息亭模式(无法访问其他应用程序)
b) Firefox、Opera 不在 kiosk 模式下,但必须 运行 隐藏在 Google 后面 Chrome 用于某些打印作业
问题:
但在每次启动时,Firefox、Opera 始终保持在 Google Chrome 之上,即使它们不是以 kiosk 模式启动的。
我在启动时编写了 Java 代码来触发一些点击,因此前端只显示 Google Chrome 但它不起作用。
任何人都可以修复代码吗?我做错了什么?我需要在屏幕 1 (1024x768)、屏幕 2 (1280x720) 上发送连发点击。
import java.awt.DisplayMode;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.event.InputEvent;
public class kiosk {
public static void main(String[] args) {
try {
Robot robot = new Robot();
// Screen Adjust
robot.setAutoDelay(500);
robot.mouseMove(1270, 400);
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
// Screens
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
for(GraphicsDevice curGs : gs) {
DisplayMode dm = curGs.getDisplayMode();
System.out.println(dm.getWidth() + " x " + dm.getHeight());
}
} catch (Exception e) {
System.out.println(e);
}
}
}
它有效!
import java.awt.DisplayMode;
import java.awt.GraphicsConfiguration;
import java.awt.GraphicsDevice;
import java.awt.GraphicsEnvironment;
import java.awt.Rectangle;
import java.awt.Robot;
import java.awt.event.InputEvent;
public class kiosk {
public static void main(String[] args) {
try {
// Screens
int ScreenID = 0;
GraphicsEnvironment ge = GraphicsEnvironment.getLocalGraphicsEnvironment();
GraphicsDevice[] gs = ge.getScreenDevices();
for(GraphicsDevice curGs : gs) {
// Get the Displays
DisplayMode dm = curGs.getDisplayMode();
int x = dm.getWidth();
System.out.println(ScreenID + " :" + dm.getWidth() + " x " + dm.getHeight());
// Burst fire now
Robot robot = new Robot();
robot.setAutoDelay(500);
if(ScreenID>0) {
robot.mouseMove(1280 + (x/13), 70);
} else {
robot.mouseMove(x/13, 70);
}
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
ScreenID++;
}
} catch (Exception e) {
System.out.println(e);
}
}
}