我一直在尝试使用来自 awt 的 Robot,在应用程序上输入一些文本。问题是我不能让它输入任何字母,如ê、à或á。例如,我尝试过这样的打印 ^e 但即使这样也行,它只是不打印任何东西VK_CIRCUMFLEX
不确定这是否重要,但我正在 Mac 上进行测试。
任何帮助都会很好。
您可以使用结合 CTRL/COMMAND+V 的剪贴板来为您完成这项工作。下面的代码至少可以在 Windows 上运行(Mac 键组合可能需要不同的顺序来进行粘贴)。
public static void main(String[] args) throws AWTException {
String osName = System.getProperty("os.name");
boolean isOSX = osName.startsWith("Mac OS X");
boolean isWin = osName.startsWith("Windows");
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
StringSelection str = new StringSelection("Héllõ Wörld");
clipboard.setContents(str, str);
Robot robot = new Robot();
if (isMac) {
// ⌘-V on Mac
robot.keyPress(KeyEvent.VK_META);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_META);
} else if (isWin) {
// Ctrl-V on Win
robot.keyPress(KeyEvent.VK_CONTROL);
robot.keyPress(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_V);
robot.keyRelease(KeyEvent.VK_CONTROL);
} else {
throw new AssertionError("Not tested on "+osName);
}
}