Java Robot MousePress()无法在Windows任务管理器上运行

时间:2016-07-24 10:40:38

标签: java windows awtrobot taskmanager mousepress

问题:

Java Robot的MousePress()在99%的情况下都能正常工作,但它在Windows 8.1或10的任务管理器上无效(我没有测试过7或更低版​​本)。

事实上,当选择“任务管理器”窗口时,即使MouseMove()也会失败。

要复制:

  1. 使用下面的代码,运行一次以查看代码是否有效。
  2. 打开任务管理器(CTRL + Shift + Escape),然后快速运行代码 选择“任务管理器”窗口。代码将完成执行,但鼠标位置不会改变。

  3. 代码:

    import java.awt.AWTException;
    import java.awt.Robot;
    import java.awt.event.MouseEvent;
    
    public class RobotMousePressTest {
    
        public static void main(String[] args) throws AWTException, InterruptedException {
            System.out.println("Started. Waiting for sleep to finish.");
            Robot r = new Robot();
            Thread.sleep(3000);
            r.mouseMove(4, 4);
            r.mousePress(MouseEvent.getMaskForButton(MouseEvent.BUTTON1));
            System.out.println("Click!");
        }
    }
    


    的问题:

    1. 有没有人知道是否有办法让它继续工作?
    2. 是否有可用于MousePress()和MouseMove()的替代库?
    3. 我是否会被迫使用本机代码(JNI)以使其正常工作?

1 个答案:

答案 0 :(得分:1)

在进行了一些挖掘和测试之后,我发现它与Windows的管理员用户有关。任何没有管理员权限的应用程序都无法与具有管理员权限的应用程序进行交互。如果我以管理员身份运行应用程序,即使选择了任务管理器,代码也会正确执行。

到目前为止,我找不到其他工作方式。