我创建了以下代码来执行以下操作:
除了输入 Y 之外,它正在做所有事情。
代码:
// Open Word Document
public boolean openWordDoc(String tempProName, String URL, String j) throws IOException, AWTException {
boolean result = false;
String userHomeFolder = System.getProperty("user.home");
File textFile = new File((userHomeFolder + "/Desktop"), j + " " + URL);
BufferedWriter out = new BufferedWriter(new FileWriter(textFile));
out.close();
if (Desktop.isDesktopSupported()) {
Desktop fD = Desktop.getDesktop();
fD.open(textFile);
}
// See if it really did open and wait until it opened to continue
String line = "";
Process p = Runtime.getRuntime().exec("tasklist.exe");
BufferedReader input = new BufferedReader(new InputStreamReader(p.getInputStream()));
while ((!line.equals("WINWORD.EXE"))) {
while ((line = input.readLine()) != null) {
String[] templine = line.split(" ");
if (templine[0].equals("WINWORD.EXE")) {
line = "WINWORD.EXE";
result = true;
break;
}
}
}
// Robot
Robot robot = new Robot();
double x = 0;
double y = 0;
x = Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2;
y = Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2;
int xx = (int) Math.round(x);
int yy = (int) Math.round(y);
robot.mouseMove(xx, yy);
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.keyPress(KeyEvent.VK_Y);
return result;
}
答案 0 :(得分:2)
由于弹出窗口始终在屏幕中间打开,因此可以安全地说:
Dimension middle = new Dimension(Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2, Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2);
返回屏幕的精确中间部分。现在你必须将光标相对于中间移动到按钮所在的位置。要做到这一点你可以反复尝试,但你也可以设置一个while循环来告诉你按钮的位置。像这样:
while(true){
System.out.println(MouseInfo.getPointerInfo().getLocation());
}
现在您知道按钮在屏幕上的位置,但现在您应该相对于中间位置,这样任何尺寸的屏幕都可以使用。因此,您必须考虑x和y的差异。既然您知道按钮相对于中间的位置,您可以说:
Robot robot = new Robot();
robot.mouseMove(middle.getWidth() + differenceX, middle.getHeight() + differenceY);
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
请注意,这种方式并不完全安全。如果用户在单击之前设法移动弹出窗口,则代码将在其他位置单击。
但对于其他人,我相信这段代码可以在所有显示器上运行。但我还没有测试过它。并且您可能需要让机器人单击两次以获得焦点,另一次需要实际点击。如果您还有其他问题,请不要犹豫。
我希望这有效。
按键代码:
// Robot
Robot robot = new Robot();
double x = 0;
double y = 0;
x = Toolkit.getDefaultToolkit().getScreenSize().getWidth() / 2;
y = Toolkit.getDefaultToolkit().getScreenSize().getHeight() / 2;
int xx = (int) Math.round(x);
int yy = (int) Math.round(y);
robot.mouseMove(xx, yy);
robot.mousePress(InputEvent.BUTTON1_DOWN_MASK);
robot.mouseRelease(InputEvent.BUTTON1_DOWN_MASK);
robot.keyPress(KeyEvent.VK_Y);
你应该能够看到它的去向 我希望这有效:)。