Shift + 向右箭头不是使用机器人类选择文本,但它在几天前曾经工作得很好



基本上,我已经选择了一些文本并尝试复制它;但是下面的代码在运行时没有执行 Ctrl+C - 没有任何东西存储到剪贴板中 - 但是手动我已经尝试我的键工作正常,但它曾经工作几天前。你能在这个问题上帮助我吗?

import java.awt.AWTException;
import java.awt.HeadlessException;
import java.awt.Robot;
import java.awt.Toolkit;
import java.awt.datatransfer.DataFlavor;
import java.awt.datatransfer.UnsupportedFlavorException;
import java.awt.event.KeyEvent;
import java.io.IOException;
public class Robot_CopyPaste{
public static void main(String[] args) throws AWTException, InterruptedException, HeadlessException, UnsupportedFlavorException, IOException{
        Robot robot=new Robot();
        Thread.sleep(4000);
        robot.keyPress(KeyEvent.VK_SHIFT);
        robot.setAutoDelay(50);
        robot.keyPress(KeyEvent.VK_RIGHT);
        robot.setAutoDelay(50);
        robot.keyPress(KeyEvent.VK_RIGHT);
        robot.setAutoDelay(50);
        robot.keyPress(KeyEvent.VK_RIGHT);
        robot.setAutoDelay(50);
        robot.keyPress(KeyEvent.VK_RIGHT);
        robot.setAutoDelay(50);
        robot.keyRelease(KeyEvent.VK_RIGHT);
        robot.setAutoDelay(50);
        robot.keyRelease(KeyEvent.VK_SHIFT);
        robot.setAutoDelay(50);
        System.out.println("Check1");
        robot.keyPress(KeyEvent.VK_CONTROL);
        robot.setAutoDelay(50);;
        robot.keyPress(KeyEvent.VK_C);
        robot.setAutoDelay(50);
        robot.keyRelease(KeyEvent.VK_C);
        robot.setAutoDelay(50);
        robot.keyRelease(KeyEvent.VK_CONTROL);
        robot.setAutoDelay(50);
        Thread.sleep(4000);
        System.out.println("Check2");
        Thread.sleep(2000);
    String str=(String)Toolkit.getDefaultToolkit().getSystemClipboard().getData(DataFlavor.stringFlavor);   
        Thread.sleep(2000);
        System.out.println("Copied content is :"+str);
    }
}

此代码是通过按住 SHIFT 以大写形式输入 请检查代码并让我知道 我认为问题出在 Shift + 向右箭头上----

 import java.awt.AWTException;
 import java.awt.Robot;
 import java.awt.event.KeyEvent;
public class Robot_SendKeys {
static void sendKeys(Robot robot, String keys) {
    for (char c : keys.toCharArray()) {
        int keyCode = KeyEvent.getExtendedKeyCodeForChar(c);
        if (KeyEvent.CHAR_UNDEFINED == keyCode) {
            throw new RuntimeException(
                "Key code not found for character '" + c + "'");
        }
        System.out.println(keyCode);
        robot.keyPress(keyCode);
        robot.delay(100);
        robot.keyRelease(keyCode);
        robot.delay(100);
    }
}
public static void main(String[] args) throws AWTException {
    Robot robot = new Robot();
    robot.setAutoDelay(50);
    robot.keyPress(KeyEvent.VK_SHIFT);
    sendKeys(robot, "Test");
    robot.keyRelease(KeyEvent.VK_SHIFT);
}

}

我在 2003 年的错误报告中找到了解决方案,大声笑

为了能够使用机器人按shift+箭头,您需要禁用NumLock,它实际上对我有用。我目前正在使用一个非常旧的大型机屏幕,所以这实际上非常有用。我希望这是有帮助的。

https://bugs.java.com/bugdatabase/view_bug.do?bug_id=4909137

相关内容

最新更新