2016-07-24 148 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的管理員用戶有關。任何沒有管理員權限的應用程序都不能與具有管理員權限的應用程序交互。如果我以管理員身份運行應用程序,則即使選擇了任務管理器,代碼也能正確執行。

到目前爲止,我沒有發現任何其他方式來工作。