2014-07-14 33 views
0

我正在嘗試編寫最佳推測的腳本來多次單擊瀏覽器上的按鈕而不停止。我可以使用java.awt.Robot類無限次地進行按鍵操作,但是我遇到的問題是編碼正確的激活器/中斷器;我不知道如何讓Java在沒有使用偵聽器的情況下監聽鍵盤命令(我想在按F3時啓動/停止),而偵聽器又需要添加到UI組件中(如果我沒有弄錯的話)。我該怎麼做呢?目前我有:在沒有UI組件的情況下監聽Java中的按鍵

public static void main(String[] args) throws Exception 
    { 
     final Robot robot = new Robot(); 
      robot.delay(10000); 
      while (true) 
      { 
       robot.mousePress(InputEvent.BUTTON1_MASK); 
       robot.delay(1000); 
       robot.mouseRelease(InputEvent.BUTTON1_MASK); 
      } 
    } 

我知道這可能是非常簡單的Jython或Groovy,但我仍然古怪。

+0

@JigarJoshi他想鉤住鍵盤,而不是按下一個鍵。他已經表示,他可以按下按鍵。 – user1071777

+0

@用戶權限

+0

這將解決您的問題:[global hotkey listener](http://stackoverflow.com/questions/79658/react-on-global-hotkey-in-a-java-program-on-windows- linux-mac) – kajacx

回答

2

據我所知,在直接的Java中沒有辦法做到這一點。由於鍵盤命令是由操作系統來處理的,所以讓Java來完成這個操作的唯一方法是編寫一些低級別的JNI。我通過在C++中編寫X事件處理程序(用於基於* nix的操作系統)做了類似的事情。由於Java中的關鍵事件是每個GUI組件,因此無法在全球範圍內執行此操作。當我編寫X事件句柄時,我面臨的挑戰是處理一次只有一個應用程序可以獲取密鑰的限制。 (XGrabKey)。

+0

@ kajacx的評論應該讓你得到你想要的。正如你所看到的,最終使用基於JNA的實現來訪問OS層。 – lordoku

相關問題