我(ab)使用Java的Robot
类在浏览器窗口中自动执行某些单击任务。在第一次单击时,Java应用程序失去焦点。如果机器人开始行为不端,我想终止程序。但是,我不能轻易这样做,因为机器人可以控制我的鼠标。
我想做的是让我的程序听取我的某些信号,告诉它退出。例如,程序可以在" escape"键是按下的。但是,当应用程序不在焦点时,我不知道如何监听击键。
我在OSX 10.9中运行Java SE 6.
在这种情况下,我如何能够终止我的计划?
修改:发布此内容后,我找到了解决同一问题的相关问题:Listening for input without focus in Java。 (但是,这并不完全重复,因为我的问题有点广泛。)
答案 0 :(得分:7)
一种选择是在每次调用Robot
之前检查鼠标位置(或定期),以验证它是否仍处于上一次mouseMove
'的任何位置。如果它检测到差异,则会抛出异常。这样,手动移动鼠标就可以用来终止事情了。
可能最好包装Robot
以确保它始终检查。我建议SecondLawObeyingRobot
。