使用 Java 将焦点设置为 Windows 中的非 Java 应用程序
我想编写一个应用程序,为Windows中的非Java应用程序创建输入。使用 Robot 类,很容易生成输入,但我需要将焦点设置为另一个应用程序的文本框,并在该处输入文本。
别担心,我不是想写恶意的东西,我只想用Java来“扩展”一个用Delphi编写的旧应用程序。
我想编写一个应用程序,为Windows中的非Java应用程序创建输入。使用 Robot 类,很容易生成输入,但我需要将焦点设置为另一个应用程序的文本框,并在该处输入文本。
别担心,我不是想写恶意的东西,我只想用Java来“扩展”一个用Delphi编写的旧应用程序。
CMDOW是一个命令行实用程序,允许您执行各种窗口操作,例如激活/停用,列出,最小化/最大化等。
或者,您可以编写 VBScript 来激活另一个应用程序。例如:
Set WshShell = WScript.CreateObject("WScript.Shell")
WshShell.AppActivate("Firefox")
然后从 Java 应用中使用脚本。Runtime.exec
这将帮助您激活另一个应用程序。
但是,如果要将重点放在其他应用程序中的文本框并编写一些文本,则难度要大得多。
检测特殊应用程序并将其放在前面可能需要本机助手,但目前您可以发送+来激活“下一个”应用程序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
}
}
你只需要实现一个方便的方法将字符(从字符串)映射到键事件值...(或找到一些现有的解决方案)