我编写了一个仅使用键盘控制另一个应用程序的应用程序。更具体地说,当按下键盘上的某个键时,该应用程序模拟按键和鼠标单击。例如,按下“x”键模拟鼠标点击右上角的X,然后稍作休眠2秒,然后按“enter”确认退出对话框。很简单。我正在用Java开发这个应用程序。
使用java.awt.Robot发送按键或鼠标单击非常容易。我正面临着一个小问题。假设我配置了一个键,它将在屏幕上的某个地方单击。问题是,连续的按键不再被捕获,因为我的应用程序由于鼠标在窗口外单击而失去了焦点。
我现在的问题是:确保我的主应用程序保持焦点的最好方法是什么?有没有办法在发出按键和鼠标点击后再次聚焦我的应用程序?有没有更好的方法?
提前谢谢。
发布于 2010-10-30 23:22:06
如果您的应用程序失去了焦点。因为您或您的Robot单击了其他位置,Robot必须再次单击该应用程序才能发送新密钥。在c/c++中,您可以强制将焦点放在应用程序上(一个重要的任务),而不是在Java中!
发布于 2010-10-30 23:29:28
您可能想看看Component.requestFocus()是否可以做您想做的事情。
但是请注意,窗口聚焦具有非常依赖于平台的行为,因此您可能需要做相当多的测试,以确保您的代码在所有情况下都能执行您想要的操作。
发布于 2013-05-14 20:30:45
我设法防止应用程序在Java中失去所有焦点。
通过在框架(或对话框)上放置一个WindowFocusListener并调用setVisible(false),然后在windowLostFocus中调用setVisible(true),该组件将在消失后立即重新出现(虽然不是最漂亮的解决方案,但它确实可以工作)。
然后调用component.requestFocus(),你的机器人应该能够继续它停止的地方
https://stackoverflow.com/questions/2153103
复制相似问题