3

我一直在尝试使用来自 awt 的 Robot,在应用程序上输入一些文本。问题是我不能让它输入任何字母,如ê、à或á。例如,我尝试过这样的打印 ^e 但即使这样也行,它只是不打印任何东西VK_CIRCUMFLEX

不确定这是否重要,但我正在 Mac 上进行测试。

任何帮助都会很好。

4

1 回答 1

4

您可以使用结合 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);
    }
}
于 2012-03-22T02:56:57.917 回答