基本上,我已经选择了一些文本并尝试复制它;但是下面的代码在运行时没有执行 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