`
evget
  • 浏览: 138903 次
  • 性别: Icon_minigender_1
  • 来自: 重庆
文章分类
社区版块
存档分类

JAVA实现屏幕抓图和远程桌面控制的方法

阅读更多
文章关键字:|JAVA|屏幕抓图|远程|桌面控制|方法|捕获|类|程序|

主要使用的是java.util.Robot类来捕获屏幕,可以实现对屏幕一个矩形区域的捕获,通过这个类,我们也可以实现一个远程桌面控制的程序。

package com.qiu.util;

import java.io.*;

import java.net.*;

import javax.swing.*;

import java.awt.*;

import java.awt.event.*;

import java.awt.image.*;

import javax.imageio.*;

import java.io.*;


/**@Author Qiu_BaiChao

*一个简单的屏幕抓图

*

**/


public class ScreenCapture {

     //test main

     public static void main(String[] args) throws Exception{

          String userdir = System.getProperty("user.dir");

          File tempFile = new File("d:","temp.png");

          ScreenCapture capture = ScreenCapture.getInstance();

          capture.captureImage();

          JFrame frame = new JFrame();

          JPanel panel = new JPanel();

          panel.setLayout(new BorderLayout());

          JLabel imagebox = new JLabel();

          panel.add(BorderLayout.CENTER,imagebox);

          imagebox.setIcon(capture.getPickedIcon());

          capture.saveToFile(tempFile);

          capture.captureImage();

          imagebox.setIcon(capture.getPickedIcon());

          frame.setContentPane(panel);

          frame.setSize(400,300);

          frame.show();

          System.out.println("Over");

     }


     private ScreenCapture() {


          try{

               robot = new Robot();

          }

          catch(AWTException e) {

               System.err.println("Internal Error: " + e);

               e.printStackTrace();

          }

          JPanel cp = (JPanel)dialog.getContentPane();

          cp.setLayout(new BorderLayout());

          labFullScreenImage.addMouseListener(new MouseAdapter() {

               public void mouseReleased(MouseEvent evn) {

                    isFirstPoint = true;

                    pickedImage = fullScreenImage.getSubimage(recX,recY,recW,recH);

                    dialog.setVisible(false);

               }

          });


          labFullScreenImage.addMouseMotionListener(new MouseMotionAdapter() {

               public void mouseDragged(MouseEvent evn) {

                    if(isFirstPoint) {

                         x1 = evn.getX();

                         y1 = evn.getY();

                         isFirstPoint = false;

                    }

                    else {

                         x2 = evn.getX();

                         y2 = evn.getY();

                         int maxX = Math.max(x1,x2);

                         int maxY = Math.max(y1,y2);

                         int minX = Math.min(x1,x2);

                         int minY = Math.min(y1,y2);

                         recX = minX;

                         recY = minY;

                         recW = maxX-minX;

                         recH = maxY-minY;

                         labFullScreenImage.drawRectangle(recX,recY,recW,recH);

                    }

               }


               public void mouseMoved(MouseEvent e) {

                    labFullScreenImage.drawCross(e.getX(),e.getY());

               }

          });


          cp.add(BorderLayout.CENTER,labFullScreenImage);

          dialog.setCursor(Cursor.getPredefinedCursor(Cursor.CROSSHAIR_CURSOR));

          dialog.setAlwaysOnTop(true);

          dialog.setMaximumSize(Toolkit.getDefaultToolkit().getScreenSize());

          dialog.setUndecorated(true);

          dialog.setSize(dialog.getMaximumSize());

          dialog.setModal(true);

     }

     //Singleton Pattern

     public static ScreenCapture getInstance() {

          return defaultCapturer;

     }



未完,原文地址:http://www.evget.com/zh-CN/Info/ReadInfo.aspx?id=9251
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics