Java 为什么CTRL+C(用Awt.Robot模拟)不能正常工作?
我使用以下例程从浏览器中读取网页框架,并在第一次复制部分页面时始终获得相同的结果: 将鼠标移动到帧上 通过三次单击选择文本 使用模拟的CTRL+C键盘按键事件复制文本 打印复制的文本 如果鼠标仍在框架中,请转至步骤1 有关实现的详细信息,请参见下面的代码:Java 为什么CTRL+C(用Awt.Robot模拟)不能正常工作?,java,awtrobot,Java,Awtrobot,我使用以下例程从浏览器中读取网页框架,并在第一次复制部分页面时始终获得相同的结果: 将鼠标移动到帧上 通过三次单击选择文本 使用模拟的CTRL+C键盘按键事件复制文本 打印复制的文本 如果鼠标仍在框架中,请转至步骤1 有关实现的详细信息,请参见下面的代码: final static int TIME_CONST = 10; final static int STEP_Y = 10; int x = 100; int y = 50; int count = 0; Robot robot = ne
final static int TIME_CONST = 10;
final static int STEP_Y = 10;
int x = 100;
int y = 50;
int count = 0;
Robot robot = new Robot();
while(y < 600) {
robot.mouseMove(x, y);
y += STEP_Y;
Thread.sleep(TIME_CONST);
// Select text with triple mouse click
robot.mousePress( InputEvent.BUTTON1_MASK );
robot.mouseRelease( InputEvent.BUTTON1_MASK );
robot.mousePress( InputEvent.BUTTON1_MASK );
robot.mouseRelease( InputEvent.BUTTON1_MASK );
robot.mousePress( InputEvent.BUTTON1_MASK );
robot.mouseRelease( InputEvent.BUTTON1_MASK );
Thread.sleep(TIME_CONST);
Sequence(robot, 5, KeyEvent.CTRL_MASK, KeyEvent.VK_C);
Thread.sleep(TIME_CONST);
Clipboard clipboard = Toolkit.getDefaultToolkit().getSystemClipboard();
Transferable contents = clipboard.getContents(clipboard);
boolean hasTransferableText = (contents != null) && contents.isDataFlavorSupported(DataFlavor.stringFlavor);
String copyResult = "";
if(hasTransferableText) {
copyResult = (String) contents.getTransferData(DataFlavor.stringFlavor);
}
System.out.println("#"+(count++)+": " + copyResult);
}
这应该起作用:
instance.keyPress(KeyEvent.VK_CONTROL);
Thread.sleep(200);
instance.keyPress(KeyEvent.VK_C);
Thread.sleep(200);
instance.keyRelease(KeyEvent.VK_C);
Thread.sleep(200);
instance.keyRelease(KeyEvent.VK_CONTROL);
Thread.sleep(200);
KeyEvent.VK_控件而不是KeyEvent.CTRL_掩码三次单击是否有效?你看到文本被选中了吗?@Fortega三次单击工作右行被选中。contents.getTransferDataFlavor.stringFlavor始终从剪贴板返回同一对象。看起来像是'Sequencerobot,5,KeyEvent.CTRL\u MASK,KeyEvent.VK\u C'不像CTRL-C那样工作。你是对的,我必须在我的Sequencerobot程序中使用KeyEvent.VK\u控件而不是KeyEvent.CTRL\u MASK,int sleep,int。。。keyEvents方法。它起作用了。请将您的方法作为答案发布,我将接受它。@Fortega干得好$