2014-06-16 14 views
5

I am (ab) utilizza la classe Java Robot per automatizzare alcune attività di clic in una finestra del browser. Al primo clic, l'applicazione Java perde lo stato attivo. Se il robot inizia a comportarsi male, vorrei terminare il programma. Tuttavia, non posso farlo facilmente perché il robot ha il controllo del mio mouse.Come posso uccidere un robot canaglia?

Quello che vorrei fare è avere il mio programma in attesa di qualche tipo di segnale da parte mia che dice di uscire. Ad esempio, il programma potrebbe uscire quando viene premuto il tasto "escape". Tuttavia, non so come ascoltare le battiture quando l'applicazione non è a fuoco.

Sto eseguendo Java SE 6 in OSX 10.9.

Come potrei essere in grado di terminare il mio programma in queste circostanze?

Modifica: Dopo aver postato questo messaggio, ho trovato una domanda correlata relativa allo stesso problema: Listening for input without focus in Java. (Tuttavia, questo non è un duplicato esatto, poiché la mia domanda è un po 'più ampia.)

+1

"Automatizza alcune attività di clic in una finestra del browser" Hai provato a utilizzare [Selenium] (http://docs.seleniumhq.org/)? – NiziL

+0

Non penso che tu possa farlo ... Voglio dire ascoltare la tastiera per una particolare combinazione di tasti, e questo è impossibile con plain java. È possibile utilizzare JNI/JNA e codificare il livello nativo per gestire questa combinazione di tasti – BackSlash

+0

@Nizil Un browser è solo un esempio; il robot potrebbe interagire con qualsiasi applicazione. La domanda che mi interessa è come interrompere ciò che il robot sta facendo. – augurar

risposta

7

Un'opzione sarebbe quella di controllare la posizione del mouse prima di ogni chiamata in Robot (oa intervalli regolari), per verificare che fosse ancora in qualsiasi posizione era l'ultimo mouseMove 'd a. Se rilevasse una discrepanza, genererebbe un'eccezione. In questo modo, lo spostamento manuale del mouse potrebbe essere utilizzato per terminare le cose.

Probabilmente è meglio avvolgere lo Robot per assicurarsi che lo controlli sempre. Suggerisco SecondLawObeyingRobot.

+0

Molto intelligente! C'è il rischio che spostare il mouse in un momento cruciale (ad esempio mentre il robot preme il pulsante del mouse) potrebbe causare alcuni problemi, ma penso che funzionerà per i miei scopi. – augurar

+0

Inserimento di una pressione di tasto 'escape' se la discrepanza viene notata prima che un' mouseRelease' debba evitare la maggior parte dei problemi di tale natura. Almeno su Windows (non sono sicuro di OSX), 'escape' annulla le drags. – Sneftel