精华内容
下载资源
问答
  • 自开发的远程桌面控制应用,仅出于兴趣爱好,详情请见:https://github.com/Cool-Coding/remote-desktop-control 喜欢的话请点Star持续关注,也欢迎提issues。
  • 本人参赛作品,纯java实现多台电脑间的远程桌面连接。
  • Java实现远程桌面连接

    2017-09-01 15:49:19
    Java实现远程桌面连接的properjavardp源码工程,可直接运行。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。。...
  • java实现远程桌面

    万次阅读 2017-11-24 10:31:08
    java实现远程桌面控制端将鼠标事件传递到服务端 服务端拿到鼠标事件之后传输到客户端 客户端拿到鼠标事件之后,通过robot类即可完成,并且截屏将图片发给服务器,服务器再发给控制端被我简化之后得到 //先介绍一下...

    java实现远程桌面

    控制端将鼠标事件传递到服务端
    服务端拿到鼠标事件之后传输到客户端
    客户端拿到鼠标事件之后,通过robot类即可完成,并且截屏将图片发给服务器,服务器再发给控制端

    这里写图片描述

    被我简化之后得到

    这里写图片描述

    
    //先介绍一下robot类的简单使用
    import java.awt.AWTException;
    import java.awt.Robot;
    import java.awt.event.InputEvent;
    
    /**
     * 使用robot
     * @author 哑元
     *
     */
    public class RobotTest {
        public static void main(String[] args) throws AWTException {
            Robot r = new Robot();
            r.mouseMove(300, 500);//鼠标移动
            r.mousePress(InputEvent.BUTTON1_MASK ); //鼠标按下
            r.mouseRelease(InputEvent.BUTTON1_MASK);//鼠标松开
            r.keyPress((int)'A');   //键盘按下  (int)'A'表示将A转换成键盘对应的key
            r.keyRelease((int)'A'); //键盘松开
        }
    }
    
    
    //屏幕抓取
    import java.awt.AWTException;
    import java.awt.Rectangle;
    import java.awt.Robot;
    import java.awt.image.BufferedImage;
    
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.WindowConstants;
    
    /**
     * 抓取本地桌面图片
     * @author 哑元
     *
     */
    public class ScreenTest {
        public static void main(String[] args) throws AWTException, InterruptedException {
            Robot robot = new Robot();  
            JFrame jframe = new JFrame();
            jframe.setSize(1200, 700);
            JLabel label = new JLabel();
            jframe.add(label);
            //四个参数x y width height
            jframe.setVisible(true);
            jframe.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE );
            //构建一个死循环动态截取
            while(true){
                BufferedImage image = robot.createScreenCapture(new Rectangle(0,0,1366,768));//截取屏幕
                label.setIcon(new ImageIcon(image));
                Thread.sleep(50);
            }   
        }
    
    }

    //远程控制原理讲解
    //分为server端和client端,
    //原本server端只作为转发,作为演示,就不写转发
    //也就是client端控制server端E
    /**
    * 这里我采用的是,在client端也就是操控端,接收到server端发送过来的screen之后,然后发送鼠标事件过去
    * 然后再用robot处理
    * 传输方式用socket+io即可处理
    * 屏幕截取和图片压缩采用了robot的屏幕截取功能和jdk自带的图片编码器,将其转换成一个字节数组
    * 发送给server端之后,robot通过io+socket可以直接拿到object对象,强制转换成InputEvent(keyEvent和MouseEvent都继承)之后
    * 通过判断event类型,分别处理即可,这里在服务端需要用到两个线程,一个是屏幕截取和发送给客户端,一个是用来监听客户端
    * 传递过来的事件
    */

    //下面是具体实现代码


    //server主程
    import java.awt.AWTException;
    import java.awt.Event;
    import java.awt.Robot;
    import java.awt.event.InputEvent;
    import java.awt.event.KeyEvent;
    import java.awt.event.MouseEvent;
    import java.io.DataOutputStream;
    import java.io.IOException;
    import java.io.ObjectInputStream;
    import java.net.ServerSocket;
    import java.net.Socket;
    
    /**
     * 服务端
     * @author 哑元
     *
     */
    public class Server {
        public static void main(String[] args) throws IOException {
            ServerSocket server = new ServerSocket(80);
            System.out.println("服务器已经正常启动");
            Socket socket = server.accept();//等待接收请求,阻塞方法
            System.out.println("有客户端连接");
            DataOutputStream dos = new DataOutputStream(socket.getOutputStream());
            //将客户端与服务器端链接的输出流交个ImageThread处理
            ImageThread imageThread = new ImageThread(dos);
            new Thread(imageThread).start();
            new Thread(new EventThread(new ObjectInputStream(socket.getInputStream()))).start();
        }
    }
    /**
     * 用来处理接收过来的鼠标事件或者键盘事件
     */
    class EventThread implements Runnable{
        private ObjectInputStream ois;
        private Robot robot;
        public EventThread(ObjectInputStream ois) {
            this.ois = ois;
        }
        @Override
        public void run() {
            try {
                robot = new Robot();
                while(true){
                    InputEvent event = (InputEvent)ois.readObject();//得知由客户端传递过来的是一个object对象
                    actionEvent(event);//处理事件
                }
            } catch (AWTException e) {
                e.printStackTrace();
            } catch (ClassNotFoundException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            }finally{
                try {
                    ois.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
    
        }
        /**
         * 事件处理,用来判断事件类型,并用robot类执行
         * @param event
         */
        public void actionEvent(InputEvent event){
            System.out.println(event);
            if(event instanceof KeyEvent){
                KeyEvent e = (KeyEvent)event;
                int type = e.getID();//拿到事件类型
                if(type==Event.KEY_PRESS){
                    robot.keyPress(e.getKeyCode());
                }else if(type == Event.KEY_RELEASE){
                    robot.keyRelease(e.getKeyCode());
                }
            }else if(event instanceof MouseEvent){
                MouseEvent e = (MouseEvent)event;
                int type = e.getID();
                if(type == Event.MOUSE_MOVE){
                    robot.mouseMove(e.getX(),e.getY());
                }else if(type == Event.MOUSE_DOWN){
                    robot.mousePress(getMouseKey(type));
                }else if(type == Event.MOUSE_UP){
                    robot.mouseRelease(getMouseKey(type));
                }else if(type == Event.MOUSE_DRAG){
                    robot.mouseMove(e.getX(), e.getY());//鼠标拖动
                }
            }
        }
        /**
         * 返回鼠标的真正事件,鼠标时间不能直接处理,需要进过转换
         * @return
         */
        public int getMouseKey(int button){
            if(button == MouseEvent.BUTTON1){//鼠标左键
                return InputEvent.BUTTON1_MASK;
            }else if(button == MouseEvent.BUTTON2){//鼠标右键
                return InputEvent.BUTTON2_MASK;
            }else if(button == MouseEvent.BUTTON3){//滚轮
                return InputEvent.BUTTON3_MASK;
            }else{
                return 0;
            }
        }
    
    }
    
    
    //屏幕截取器和发送器,这里需要拿到socket的out流
    import java.awt.AWTException;
    import java.awt.Dimension;
    import java.awt.Rectangle;
    import java.awt.Robot;
    import java.awt.Toolkit;
    import java.awt.image.BufferedImage;
    import java.io.ByteArrayOutputStream;
    import java.io.DataOutputStream;
    import java.io.IOException;
    
    import com.sun.image.codec.jpeg.*;
    /**
     * 用来将图片数据发送
     * @author 哑元
     *
     */
    public class ImageThread implements Runnable{
        DataOutputStream dos = null;    //数据输出流
        public ImageThread(DataOutputStream dos){
            this.dos = dos;
        }
        @Override
        public void run() {
            try {
                Robot robot = new Robot();
                //截取整个屏幕
                Dimension dimension = Toolkit.getDefaultToolkit().getScreenSize();
                /*
                int width = (int)dimension.getWidth();
                int height = (int)dimension.getWidth();
                Rectangle rec = new Rectangle(0,0,width,height);
                */
                Rectangle rec = new Rectangle(dimension);
                BufferedImage image;
                byte imageBytes[];
                while(true){
                    image = robot.createScreenCapture(rec);
                    imageBytes = getImageBytes(image);
                    dos.writeInt(imageBytes.length);
                    dos.write(imageBytes);
                    dos.flush();
                    Thread.sleep(50);   //线程睡眠
                }
    
            } catch (AWTException e) {
                e.printStackTrace();
            } catch (ImageFormatException e) {
                e.printStackTrace();
            } catch (IOException e) {
                e.printStackTrace();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }finally{
                try {
                    if(dos!= null)  dos.close();
                } catch (IOException e) {
                    e.printStackTrace();
                }
            }
        }
        /**
         *  压缩图片
         * @param 需要压缩的图片
         * @return 压缩后的byte数组
         * @throws IOException 
         * @throws ImageFormatException 
         */
        public byte[] getImageBytes(BufferedImage image) throws ImageFormatException, IOException{
            ByteArrayOutputStream baos = new ByteArrayOutputStream();
            //压缩器压缩,先拿到存放到byte输出流中
            JPEGImageEncoder jpegd = JPEGCodec.createJPEGEncoder(baos);
            //将iamge压缩
            jpegd.encode(image);
            //转换成byte数组
            return baos.toByteArray();  
        }
    
    }
    
    
    --------------------------------------------------------------------------------------
    //client端,用来接收creen图片和发送鼠标事件
    import java.awt.event.InputEvent;
    import java.awt.event.KeyEvent;
    import java.awt.event.KeyListener;
    import java.awt.event.MouseEvent;
    import java.awt.event.MouseListener;
    import java.io.DataInputStream;
    import java.io.IOException;
    import java.io.ObjectOutputStream;
    import java.net.Socket;
    import java.net.UnknownHostException;
    
    import javax.swing.ImageIcon;
    import javax.swing.JFrame;
    import javax.swing.JLabel;
    import javax.swing.JPanel;
    import javax.swing.JScrollPane;
    import javax.swing.WindowConstants;
    
    /**
     * 客户端
     * @author 哑元
     *
     */
    public class Client {
    
        public static void main(String args[]) throws UnknownHostException, IOException{
            Socket s = new Socket("127.0.0.1",80);
            DataInputStream dis = new DataInputStream(s.getInputStream());
            ObjectOutputStream oos = new ObjectOutputStream(s.getOutputStream());
            ClientWindow cw = new ClientWindow(oos);
            byte[] imageBytes;
            while(true){
                imageBytes = new byte[dis.readInt()];   //先拿到传过来的数组长度
                dis.readFully(imageBytes);  //所有的数据存放到byte中
                cw.repainImage(imageBytes);
            }
        }
    }
    
    /**
     * 客户端窗体
     * @author 哑元
     *
     */
    class ClientWindow extends JFrame{
        private ObjectOutputStream oos;
        private JLabel label;
        //重写背景图片方法
        public void repainImage(byte [] imageBytes){
            label.setIcon(new ImageIcon(imageBytes));
            this.repaint();
        }
        public ClientWindow(ObjectOutputStream oos){
            this.oos = oos;
            this.setTitle("远程控制程序");
            label = new JLabel();
            JPanel p = new JPanel();
            p.add(label);
            JScrollPane scroll = new JScrollPane(p);//给p面板添加滚动条
            this.add(scroll);
            this.setSize(1024,768);
            this.setDefaultCloseOperation(WindowConstants.EXIT_ON_CLOSE);
            this.setVisible(true);
            this.addKeyListener(new KeyListener() {
    
                @Override
                public void keyTyped(KeyEvent e) {
                    // TODO Auto-generated method stub
    
                }
    
                @Override
                public void keyReleased(KeyEvent e) {
                    sendEvent(e);
    
                }
    
                @Override
                public void keyPressed(KeyEvent e) {
                    sendEvent(e);
    
                }
            });
    
            label.addMouseListener(new MouseListener() {
    
                @Override
                public void mouseReleased(MouseEvent e) {
                    sendEvent(e);
    
                }
    
                @Override
                public void mousePressed(MouseEvent e) {
                    sendEvent(e);
    
                }
    
                @Override
                public void mouseClicked(MouseEvent e) {
                    sendEvent(e);
    
                }
    
                @Override
                public void mouseEntered(MouseEvent e) {
                    // TODO Auto-generated method stub
    
                }
    
                @Override
                public void mouseExited(MouseEvent e) {
                    // TODO Auto-generated method stub
    
                }
            });
        }
        public void sendEvent(InputEvent event){
            try {
                oos.writeObject(event);
            } catch (IOException e) {
                e.printStackTrace();
            }
        }
    }
    展开全文
  • 主要使用的是java.util.Robot类来捕获屏幕,可以实现对屏幕一个矩形区域的捕获,通过这个类,我们也可以实现一个远程桌面控制的程序。package com.qiu.util;import java.io.*;import java.net.*;import javax.swing.*;...

    主要使用的是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;

    }

    /**捕捉全屏慕*/

    public Icon captureFullScreen() {

    fullScreenImage = robot.createScreenCapture(new Rectangle(

    Toolkit.getDefaultToolkit().getScreenSize()));

    ImageIcon icon = new ImageIcon(fullScreenImage);

    return icon;

    }

    /**捕捉屏幕的一个矫形区域

    */

    public void captureImage() {

    fullScreenImage = robot.createScreenCapture(new Rectangle(

    Toolkit.getDefaultToolkit().getScreenSize()));

    ImageIcon icon = new ImageIcon(fullScreenImage);

    labFullScreenImage.setIcon(icon);

    dialog.setVisible(true);

    }

    /**得到捕捉后的BufferedImage*/

    public BufferedImage getPickedImage() {

    return pickedImage;

    }

    /**得到捕捉后的Icon*/

    public ImageIcon getPickedIcon() {

    return new ImageIcon(getPickedImage());

    }

    /**储存为一个文件,为PNG格式

    *@deprecated

    *replaced by saveAsPNG(File file)

    **/

    @Deprecated

    public void saveToFile(File file) throws IOException{

    ImageIO.write(getPickedImage(),defaultImageFormater,file);

    }

    /**储存为一个文件,为PNG格式*/

    public void saveAsPNG(File file) throws IOException {

    ImageIO.write(getPickedImage(),"png",file);

    }

    /**储存为一个JPEG格式图像文件*/

    public void saveAsJPEG(File file) throws IOException {

    ImageIO.write(getPickedImage(),"JPEG",file);

    }

    /**写入一个OutputStream*/

    public void write(OutputStream out) throws IOException{

    ImageIO.write(getPickedImage(),defaultImageFormater,out);

    }

    //singleton design pattern

    private static ScreenCapture defaultCapturer = new ScreenCapture();

    private int x1,y1,x2,y2;

    private int recX,recY,recH,recW; //截取的图像

    private boolean isFirstPoint = true;

    private BackgroundImage labFullScreenImage = new BackgroundImage();

    private Robot robot;

    private BufferedImage fullScreenImage;

    private BufferedImage pickedImage;

    private String defaultImageFormater = "png";

    private JDialog dialog = new JDialog();

    }

    /**显示图片的Label*/

    class BackgroundImage extends JLabel{

    public void paintComponent(Graphics g) {

    super.paintComponent(g);

    g.drawRect(x,y,w,h);

    String area = Integer.toString(w)+" * "+ Integer.toString(h);

    g.drawString(area,x+(int)w/2-15,y+(int)h/2);

    g.drawLine(lineX,0,lineX,getHeight());

    g.drawLine(0,lineY,getWidth(),lineY);

    }

    public void drawRectangle(int x,int y,int width,int height) {

    this.x = x;

    this.y = y;

    h = height;

    w = width;

    repaint();

    }

    public void drawCross(int x,int y) {

    lineX = x;

    lineY = y;

    repaint();

    }

    int lineX,lineY;

    int x,y,h,w;

    }

    小编推荐:欲学习电脑技术、系统维护、网络管理、编程开发和安全攻防等高端IT技术,请 点击这里注册账号,公开课频道价值万元IT培训教程免费学,让您少走弯路、事半功倍,好工作升职加薪!

    免责声明:本站系公益性非盈利IT技术普及网,本文由投稿者转载自互联网的公开文章,文末均已注明出处,其内容和图片版权归原网站或作者所有,文中所述不代表本站观点,若有无意侵权或转载不当之处请从网站右下角联系我们处理,谢谢合作!

    展开全文
  • 其他IDE稍做修改就行,源码不依赖其他JAR包,所以容量很小,服务端主窗口为表格,可以打开预览窗口(屏幕墙),预览在线客户端画面,可以控制在线的电脑,另外包含功能:开机(客户端处理关机状态且打开远程唤醒的...
  • 我正在规划/建模阶段开发远程桌面共享解决方案,该解决方案必须...加载项是必需的,因为(afaik)没有浏览器技术允许仅在浏览器内运行的应用程序进行桌面控制.加载项安装过程必须尽可能简单透明(类似于AdobeConnectNo...

    我正在规划/建模阶段开发远程桌面共享解决方案,该解决方案必须基于Web浏览器.换句话说:用户将能够使用他的网络浏览器查看某人的远程桌面并与之交互.

    除了他的浏览器之外,想要共享他的桌面的用户将需要的所有内容都是安装加载项,他将在必要时提示他.加载项是必需的,因为(afaik)没有浏览器技术允许仅在浏览器内运行的应用程序进行桌面控制.加载项安装过程必须尽可能简单透明(类似于AdobeConnectNow,以防任何人熟悉它).

    用户可以同时与很多人共享他的桌面,但是一次只允许其中一个桌面控件(否则没有意义).

    项目要求:

    >所有采用的技术必须与开源许可证兼容

    >两个前端都将在闪存中(浏览器)

    >必须适用于Linux,Windows XP(及更高版本)和MacOSX.

    >必须至少使用IE7(及更高版本)和Firefox3.0(及更高版本).

    >至少,一旦共享者的流从它将被广播的位置到达服务器,这里必须在flv中广播(所以我在考虑是否在客户端的机器上进行编码(共享桌面的那个)或者以其他格式将其发送到服务器并在那里对其进行编码).

    >性能和可扩展性非常重要:它必须能够处理数百个用户(一个桌面共享器,其余观众)

    >我们肯定会使用red5.

    我怀疑主要是实现桌面发布者方面(加载项和流转化器):

    2)我应该以VNC为基础吗?

    3)考虑到需要让它跨平台工作,我应该选择哪种语言? (我的团队非常习惯于使用java,而且我对C/C++有一些了解,但真的很有用).

    4)任何其他建议表示赞赏.

    展开全文
  • Java远程桌面控制

    2012-03-28 10:29:25
    Java实现远程桌面控制,屏幕查看,键盘和鼠标控制,可直接运行
  • 主要使用的是java.util.Robot类来捕获屏幕,可以实现对屏幕一个矩形区域的捕获,通过这个类,我们也可以实现一个远程桌面控制的程序。package com.qiu.util;import java.io.*;import java.net.*;import javax.swing.*;...

    主要使用的是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.*;

    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;

    }

    public Icon captureFullScreen() {

    fullScreenImag

    Toolkit.getDefaultToolkit().getScreenSize()));

    ImageIcon icon = new ImageIcon(fullScreenImage);

    return icon;

    }

    public void captureImage() {

    fullScreenImage = robot.createScreenCapture(new Rectangle(

    Toolkit.getDefaultToolkit().getScreenSize()));

    ImageIcon icon = new ImageIcon(fullScreenImage);

    labFullScreenImage.setIcon(icon);

    dialog.setVisible(true);

    }

    public BufferedImage getPickedImage() {

    return pickedImage;

    }

    public ImageIcon getPickedIcon() {

    return new ImageIcon(getPickedImage());

    }

    @Deprecated

    public void saveToFile(File file) throws IOException{

    ImageIO.write(getPickedImage(),defaultImageFormater,file);

    }

    public void saveAsPNG(File file) throws IOException {

    ImageIO.write(getPickedImage(),http://www.30rec.com/"png",file);

    }

    public void saveAsJPEG(File file) throws IOException {

    ImageIO.write(getPickedImage(),"JPEG",file);

    }

    public void write(OutputStream out) throws IOException{

    ImageIO.write(getPickedImage(),defaultImageFormater,out);

    }

    //singleton design pattern

    private static ScreenCapture defaultCapturer = new

    ScreenCapture();

    private int x1http://www.aomygod.com/,y1,x2,y2;

    private int recX,recY,recH,recW; //截取的图像

    private boolean isFirstPoint = true;

    private BackgroundImage labFullScreenImage = new

    BackgroundImage();

    private Robot robot;

    private BufferedImage fullScreenImage;

    private BufferedImage pickedImage;

    private String defaultImageFormater = "png";

    private JDialog dialog = new JDialog();

    }

    class BackgroundImage extends JLabel{

    public void paintComponent(Graphics g) {

    super.paintComponent(g);

    g.drawRect(x,y,w,h);

    String area = Integer.toString(w)+" * "+

    Integer.toString(h);

    g.drawString(area,x+(int)w/2-15,y+(int)h/2);

    g.drawLine(lineX,0,lineX,getHeight());

    g.drawLine(0,lineY,getWidth(),lineY);

    }

    public void drawRectangle(int x,int y,int width,int height) {

    this.x = x;

    this.y = y;

    h = height;

    w = width;

    repaint();

    }

    public void drawCross(int x,int y) {

    lineX = x;

    lineY = y;

    repaint();

    }

    int lineX,lineY;

    int x,y,h,w;

    }

    -

    资料引用:http://om/441791.html

    展开全文
  • java实现远程控制

    2021-03-23 18:40:50
    Java JDK的Robot对象,该对象不仅可以完成屏幕图像截取操作,而且可以控制鼠标,键盘,如此便可以轻而易举地实现远程服务器的控制。本文介绍如何使用Java Robot对象实现远程服务器的控制,并给出了相应的Java源代码...
  • 具体介绍请跳转博客http://blog.csdn.net/wochendaixin/article/details/78540828
  • 效果1.1 里面有三个java文件BorderInit.java //抽出的一个方法定义容器ReceiveImages.java //用于接收服务器端发送的信息SendScreen.java //用于获取当前平台的页面,通过Socket发送1.2启动顺序:SendScreen.java --...
  • java远程桌面控制系统

    热门讨论 2012-12-17 17:57:01
    基于java远程桌面控制系统 socket通信
  • 利用Java实现远程控制

    2021-03-05 17:48:30
    利用Java实现远程控制摘要:介绍了远程控制地原理,详细地叙述了利用Java实现远程控制软件地程序设计方法和要点,并给出了要点地具体实现方法.关键词:远程控制;Java;客户机/服务器...
  • Java JDK1.4 的Robot对象,该对象可以完成屏幕图像截取操作,控制鼠标,键盘,如此便可以轻而易举地实现远程服务器的控制。本文向大家介绍如何用Java Robot对象实现远程服务器的控制,并给出了相应的Java源代码。...
  • 支持远程桌面监视和控制,可以对远程进行控制,对方可以拒绝控制
  • Java JDK1.4 的Robot对象,该对象可以完成屏幕图像截取操作,控制鼠标,键盘,如此便可以轻而易举地实现远程服务器的控制。本文向大家介绍如何用Java Robot对象实现远程服务器的控制,并给出了相应的Java源代码。...
  • java实现电脑远程控制完整源代码实例。Java JDK1.4 的Robot对象,该对象可以完成屏幕图像截取操作,控制鼠标,键盘,如此便可以轻而易举地实现远程服务器的控制。本文向大家介绍如何用Java Robot对象实现远程服务器...
  • Java JDK1.4 的Robot对象,该对象可以完成屏幕图像截取操作,控制鼠标,键盘,如此便可以轻而易举地实现远程服务器的控制。本文向大家介绍如何用Java Robot对象实现远程服务器的控制,并给出了相应的Java源代码。...
  • ![图片说明](https://img-ask.csdn.net/upload/201812/05/1543955170_170390.jpg)
  • java实现远程协助小例子

    热门讨论 2015-03-18 15:57:02
    java实现的一个远程协助的小例子 共初学者参考借鉴, 详细见帖 http://bbs.csdn.net/topics/391000266
  • 就是比如能修改或获取windows桌面上某个...(不是说的远程桌面), 就是想写一个桌宠,偶尔会触发去推图标(就是把图标往上顶一格什么的)。 桌宠已经能实现了,现在是不知道怎么去控制桌面,希望各位大佬能给点思路
  • 业务场景还原:有个企业有两个服务器做web应用的,一个是内网一个是外网,外网可以通过安装向日葵等远程桌面控制,内网只能由他们公司员工访问,每次要远程内网服务器,都要跑到他们公司(不给开权限和vpn堡垒机啥的...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 17,379
精华内容 6,951
关键字:

java实现远程桌面控制

java 订阅