单击时防止系统托盘图标窃取焦点

时间:2009-06-24 23:46:11

标签: java focus swt awtrobot

我正在用Java编写一个应用程序,它在系统托盘中放置一个图标(通过SWT)。单击此图标时,我希望自动将某些键(通过Robot类)键入到单击时可以处于焦点的任何文本字段(可以在任何窗口中)。不幸的是,单击系统托盘图标会将焦点从先前聚焦的窗口中移开,从而窃取击键。

有没有办法让文字输入以前关注的窗口?

2 个答案:

答案 0 :(得分:0)

可能不是,至少不容易。 This issue been discussed before.

答案 1 :(得分:0)

虽然它不能被视为官方解决方案,但我发现在发出文本击键之前立即发出ALT+TAB次击键取得了一些成功。

Robot robot = new Robot();

robot.keyPress(KeyEvent.VK_ALT);
robot.keyPress(KeyEvent.VK_TAB);
robot.keyRelease(KeyEvent.VK_ALT);
robot.keyRelease(KeyEvent.VK_TAB);

// ... The keyPress/keyRelease pairs for the actual characters now begin

就像我说的那样,考虑到ALT+TAB组合不能成为普遍的焦点转换命令,这远非官方解决方案。但是,这似乎适合我的特殊情况。