Come catturare una schermata da un sistema remoto Utilizzo di Java

November 1

C'è una semplice applicazione Java che è possibile utilizzare per inviare uno screenshot corrente su Internet. Si possono trovare questo programma utile se è necessario gestire più computer, se si possiede un business e desidera monitorare l'utilizzo del computer dei vostri dipendenti, o se si desidera monitorare l'utilizzo del computer dei vostri figli. Si prevede la creazione di due classi Java: ScreenServer.java e ScreenClient.java. Tuttavia, assicurati di controllare l'avviso nella parte inferiore della pagina prima di mettere l'applicazione in uso.

istruzione

1 Aprite il vostro editor di testo preferito, e immediatamente salvare il documento vuoto come "ScreenServer.java." Questa è la parte del programma che deve essere eseguito sul sistema remoto. Esso rimane in attesa di una connessione su una porta arbitraria e inviare le dimensioni dello schermo e dati attraverso tale porta. Questo esempio utilizza "5494" come la porta, ma qualsiasi numero di porta lo farà, a condizione che non sia in conflitto con un altro servizio in esecuzione sul computer. Naturalmente, è necessario avere un accesso diretto al computer remoto ad un certo punto, al fine di mettere questo programma su di esso e avviarlo in esecuzione.

2 Incollare il seguente codice nel "ScreenServer":

import java.net. *;

import java.awt. *;

importare java.awt.Image. *;

import java.io. *;

import javax.imageio.ImageIO;

public class ScreenServer {

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

Robot robot = new Robot ();

schermo BufferedImage;

while (true) {

Server ServerSocket = new ServerSocket (5494);

Socket client = server.accept ();

dimensione Rectangle = new Rectangle (Toolkit.getDefaultToolkit () getScreenSize ().);

schermo = robot.createScreenCapture (dimensione);

int [] rgbData = new int [(int) (size.getWidth () * size.getHeight ())];

screen.getRGB (0,0, (int) size.getWidth (), (int) size.getHeight (), rgbData, 0, (int) size.getWidth ());

OutputStream baseOut = client.getOutputStream ();

ObjectOutputStream out = new ObjectOutputStream (baseOut);

ImageIO.write (schermo, "png", new File ( "orig_screen.png"));

out.writeObject (dimensione);

for (int x = 0; x & lt; rgbData.length; x ++) {

out.writeInt (rgbData [x]);

}

out.flush ();

server.close ();

client.close ();

out.close ();

baseOut.close ();

}

}

}

Salvare il codice.

3 Aprire un nuovo documento in un editor di testo, e il nome "ScreenClient.java." Questo è il programma che verrà eseguito in locale. Si collega semplicemente al computer remoto all'indirizzo specificato e salva i dati dei pixel che riceve per l'hard disk in formato PNG.

4 Incollare il codice seguente, e salvare il lavoro:

import java.net. *;

import java.awt. *;

importare java.awt.Image. *;

import java.io. *;

import javax.imageio.ImageIO;

public class ScreenClient {

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

server socket = Socket nuove (args [0], 5494);

ObjectInputStream a = new ObjectInputStream (server.getInputStream ());

size = rettangolo (Rectangle) in.readObject ();

int [] rgbData = new int [(int) (size.getWidth () * size.getHeight ())];

for (int x = 0; x & lt; rgbData.length; x ++) {

rgbData [x] = in.readInt ();

}

in.close ();

server.close ();

schermo BufferedImage = new BufferedImage ((int) size.getWidth (), (int) size.getHeight (), BufferedImage.TYPE_INT_ARGB);

screen.setRGB (0,0, (int) size.getWidth (), (int) size.getHeight (), rgbData, 0, (int) size.getWidth ());

ImageIO.write (schermo, "png", new File ( "screen.png"));

}

}