最近我一直在玩機器人課,我有它做我想做的,但我還沒有想出如何通過用戶輸入中斷/停止其行爲。聽衆與機器人類
例如:我想讓它點擊桌面一百次,但我決定點擊四十次,我想讓它退出(或暫停)。
我希望能夠做一些簡單的事情,比如按某個鍵或按下鼠標中鍵以使其停止。爲了做到這一點,它必須能夠監聽Java應用程序以外的輸入,因爲Robot正在執行的操作在其他程序中。
最近我一直在玩機器人課,我有它做我想做的,但我還沒有想出如何通過用戶輸入中斷/停止其行爲。聽衆與機器人類
例如:我想讓它點擊桌面一百次,但我決定點擊四十次,我想讓它退出(或暫停)。
我希望能夠做一些簡單的事情,比如按某個鍵或按下鼠標中鍵以使其停止。爲了做到這一點,它必須能夠監聽Java應用程序以外的輸入,因爲Robot正在執行的操作在其他程序中。
您可以使用一些從這個答案的代碼: Simulate a key held down in Java
,然後添加一個監聽器以任何行動,組件,無論打電話的機器人命令停止方法。
這是否爲您提供了一些靈感?
編輯經進一步討論後,真正的問題是:
如何對外部鼠標事件(外Java應用程序)的Java應用程序中作出迴應?
它似乎你不能沒有本機代碼和鼠標鉤子,因爲它的操作系統相關。
進一步討論參看Is it possible to have a MouseMotionListener listen to all system mouse motion events?
正如愛德華說,似乎沒有成爲一個方式做正是我一直在尋找。所以這個答案是解釋我是如何取得一個可接受的替代品的。
另一個問題愛德華鏈接到曾指出,
MouseInfo.getPointerInfo().getLocation()
能夠獲取鼠標無論什麼樣的鼠標是做座標。我的程序使用機器人類來控制特定座標範圍內的鼠標。我也希望能夠通過用戶輸入來禁用程序。
爲了達到這個結果,我將鼠標的x和y座標與機器人最後設置的x和y座標進行了比較。如果兩者不匹配,則程序退出。
通過此方法暫停程序將是不切實際的,因爲恢復將需要在暫停之前回到原始的x和y座標,但它至少給出了一個示例,說明如何實現停止而不實際關注java父母計劃。
爲了暫停程序,您將改爲將座標與一系列座標進行比較(讓座標創建一個虛構的2D框)。如果鼠標的座標在該範圍內:暫停。要恢復,請進行相反的檢查(鼠標不在該範圍內)。
除非我沒有正確讀取您的代碼,只是模擬按下一個按鍵,而不是接受按下的按鍵。據我所知,情景完全不相關。 澄清:我不知道如何添加一個監聽器,而不是在任何執行java之外都可以監聽。我的目標是當我在別處時(例如在不同的程序中)使用監聽器。 – Rhyono
我的迴應是關於添加偵聽器到組件來停止機器人。好的,所以問題的關鍵不在於增加監聽器來停止機器人類,而是如何響應Java應用程序之外的事件。無法幫助你。 – edwardsmatt
由於我自己的嘗試經驗不足,我的表述很糟糕;感謝您的迴應。 – Rhyono