键盘模拟Ctrl+C,并读取复制内容

来源:互联网 发布:免费证件制作软件下载 编辑:程序博客网 时间:2024/05/18 01:30


  近日碰到一个模拟键盘点击Ctrl+C,并读取复制内容相关的问题,记录以下:

1、  模拟键盘点击Ctrl+C

publicvoid keyPressWithCtrl(Robotr,intkey){

       r.keyPress(KeyEvent.VK_CONTROL);

       r.keyPress(key);

       r.keyRelease(key);

       r.keyRelease(KeyEvent.VK_CONTROL);

       r.delay(100);//非常重要

       System.out.println("点击ctrl组合键");

  }

2、  读取所复制的内容:

public String print(){

       Clipboard clip=Toolkit.getDefaultToolkit().getSystemClipboard();

       DataFlavor flavor=DataFlavor.stringFlavor;

       if(clip.isDataFlavorAvailable(flavor)){

           try{

              String s=(String) clip.getData(flavor);

              returns;

           }catch(Exceptione){

              e.printStackTrace();

           }

       }

       returnnull;

    }













3、  测试:

运行程序,打开记事本,复制记事本中的内容,并输出。注意:运行的时候eclipse不要最大化

import java.awt.*;

import java.awt.datatransfer.*;

import java.awt.event.*;

 

import edu.bupt.isc.extender.tool.KeyPress;

 

publicclass pressTest {

 

    publicstaticvoid main(String[]args) {

       //TODO Auto-generated method stub

       Clipboard clip = Toolkit.getDefaultToolkit().getSystemClipboard();//获取系统剪贴板

          

       //清空剪贴板

       String write="";

       Transferable tText = new StringSelection(write);

       clip.setContents(tText,null);

      

       Runtime rt=Runtime.getRuntime();//打开记事本,先点击全选,然后点击Ctrl+v,ctrl+s

        try {

        Robot robot=new Robot();

        Thread.sleep(100);

           rt.exec("cmd /c 1.txt /f");

           Thread.sleep(500);

             

           //盲点,是鼠标移动到记事本上

           for(intx=100;x<101;x++){

              for(inty=200;y<201;y++){

                  System.out.println("点击");

                  robot.mouseMove(x,y);

                  robot.mousePress(InputEvent.BUTTON1_MASK);

                  robot.mouseRelease(InputEvent.BUTTON1_MASK);

              }

           }

          

           //点击Ctrl+ACtrl+C

           KeyPress kp=new KeyPress();

            kp.keyPressWithCtrl(robot,KeyEvent.VK_A);

            kp.keyPressWithCtrl(robot,KeyEvent.VK_C);

            System.out.println("复制成功");

            String s=kp.paste();

            System.out.println("此时剪贴板的数据是: "+s);

        } catch (Exceptione) {

        e.printStackTrace();

        }  

    }

}

运行结果如下:


更好一点的是直接从剪贴板中读取字符串,然后写入到指定文档中。

0 0
原创粉丝点击