2016-01-20 65 views
1

我已經在Java中,使做了一個簡單實用程序提供了鼠標點擊的地方是,每X毫秒一次:的Java:mousePress()並不總是工作

import java.awt.Robot; 
import java.awt.event.InputEvent; 

public class Main 
{ 
    public static final int SLEEP_TIME = 60000; 

    public static void main(String[] args) 
    { 
     try 
     { 
      Robot r = new Robot(); 
      int i = 0; 
      while(true) 
      { 
       doNothing(); 
       System.out.println(++i + ") Pressed"); 
       r.mousePress(InputEvent.BUTTON1_DOWN_MASK); 
       r.mouseRelease(InputEvent.BUTTON1_DOWN_MASK); 
      } 
     }catch(Exception e) 
     { 
      e.printStackTrace(); 
     } 
    } 

    private static void doNothing() 
    { 
     long endTime = System.currentTimeMillis() + SLEEP_TIME; 
     while(System.currentTimeMillis() < endTime) 
     { 
      //Do nothing 
     } 
    } 
} 

我已因外部原因在安裝程序中有一個按鈕,我必須每隔X分鐘按一下按鈕,因爲它存在故障。

所以,這個小程序在任何地方都能正常工作(桌面,Chrome等),除了安裝程序。

的按鈕,我必須按就是這個樣子,「Reanudar」: See here

所以在Eclipse中似乎操作完成後(它將消息每次),但它只是不工作。

請幫忙嗎?提前致謝。

+2

您是否試圖在新聞稿和放映之間放置一段時間?只是一個瘋狂的猜測,只有在與安裝程序一起使用時纔會導致問題。 – Ma3x

回答

0

找到解決方案! 我的一位朋友成功指出,由於此安裝程序以管理員身份運行,因此非管理員Eclipse程序可能無法點擊。 所以我運行Eclipse和我的程序作爲管理員和它工作!

感謝那些我得到的答案,希望我解決了別人的相關問題!

1

使用這些方法時,我所看到的兩個主要問題如下:按下和釋放之間

  1. 延遲。稍微延遲一點,我想它可能會更好。
  2. 應用程序本身有阻止這種類型的輸入。這在大型應用程序中尤其常見(特別是那些直接拒絕使用bot/macros的東西)。我懷疑這是問題,但可能需要根據應用程序進行調查。

我會從這裏開始,看看你能找到什麼。至少會增加一些延遲,並將結果發佈到更多討論中。