2016-07-24 136 views
0

问题:Java的机器人MousePress()不工作在Windows任务管理器

的Java机器人的MousePress()工作的时间细99%,但它不能在Windows 8.1或10的任务管理器的工作(我没有测试7或更低)。

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

要复制:

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

代码:

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)以使其正常工作吗?

回答

0

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

到目前为止,我没有发现任何其他方式来工作。