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

Sti*_*cke 16 java windows

我想编写一个为Windows中的非Java应用程序创建输入的应用程序.使用Robot类可以很容易地生成输入,但是我需要将焦点设置到另一个应用程序的文本框并在那里输入文本.

别担心我不是想写恶意的东西,我只是想用Java来"扩展"用Delphi编写的旧应用程序.

dog*_*ane 9

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

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

Set WshShell = WScript.CreateObject("WScript.Shell") 
WshShell.AppActivate("Firefox")
Run Code Online (Sandbox Code Playgroud)

然后使用Runtime.execJava应用程序执行脚本.

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

但是,如果您想要专注于其他应用程序中的文本框并编写一些文本,那将会困难得多.


And*_*s_D 8

检测特殊应用程序并将其放在前面可能需要本机帮助程序,但目前您可以发送ALT+ TAB以激活"下一个"应用程序

这有效:

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
  }
}
Run Code Online (Sandbox Code Playgroud)

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


小智 7

配置延迟,否则它将无法工作:

Robot r = new Robot();
r.keyPress(KeyEvent.VK_ALT);
r.keyPress(KeyEvent.VK_TAB);
r.delay(10); //set the delay
r.keyRelease(KeyEvent.VK_ALT);
r.keyRelease(KeyEvent.VK_TAB);
Run Code Online (Sandbox Code Playgroud)