使用 Java 将焦点设置为 Windows 中的非 Java 应用程序

2022-09-03 00:58:03

我想编写一个应用程序,为Windows中的非Java应用程序创建输入。使用 Robot 类,很容易生成输入,但我需要将焦点设置为另一个应用程序的文本框,并在该处输入文本。

别担心,我不是想写恶意的东西,我只想用Java来“扩展”一个用Delphi编写的旧应用程序。


答案 1

CMDOW是一个命令行实用程序,允许您执行各种窗口操作,例如激活/停用,列出,最小化/最大化等。

或者,您可以编写 VBScript 来激活另一个应用程序。例如:

Set WshShell = WScript.CreateObject("WScript.Shell") 
WshShell.AppActivate("Firefox")

然后从 Java 应用中使用脚本。Runtime.exec

这将帮助您激活另一个应用程序。

但是,如果要将重点放在其他应用程序中的文本框并编写一些文本,则难度要大得多。


答案 2

检测特殊应用程序并将其放在前面可能需要本机助手,但目前您可以发送+来激活“下一个”应用程序ALTTAB

这有效:

public void switchFocus() {
  try {
    Robot r = new Robot();
    r.keyPress(KeyEvent.VK_ALT);
    r.keyPress(KeyEvent.VK_TAB);
    r.keyRelease(KeyEvent.VK_ALT);
    r.keyRelease(KeyEvent.VK_TAB);
  } catch(AWTException e) {
    // handle
  }
}

你只需要实现一个方便的方法将字符(从字符串)映射到键事件值...(或找到一些现有的解决方案)


推荐