Nwlapcug.com


Come catturare uno Screenshot da un sistema remoto usando Java

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

Istruzioni

1

Aprite il vostro editor di testo preferito e salvare immediatamente il documento vuoto come "ScreenServer.java." Questa è la parte del programma che deve essere in esecuzione sul sistema remoto. Si ascolta per una connessione su una porta arbitraria e inviare i dati e le dimensioni dello schermo tramite quella porta. Questo esempio utilizza "5494" come la porta, ma qualsiasi numero di porta farà, purché che esso non sia in conflitto con un altro servizio in esecuzione sul computer. Naturalmente, sarà necessario accedere direttamente al computer remoto, a un certo punto al fine di mettere questo programma su di esso e avviare l'esecuzione.

2

Incollare il codice riportato di seguito il "ScreenServer":

importazione java.net.*;

importazione java.awt.*;

importazione java.awt.image.*;

importazione java.io;

importazione javax.imageio.ImageIO;

public class ScreenServer {

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

Robot robot = new Robot();

BufferedImage screen;

while (true) {

ServerSocket server = new ServerSocket(5494);

Socket client = server.accept();

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

screen = robot.createScreenCapture(size);

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(screen, "png", new File("orig_screen.png"));

out.writeObject(size);

for (int x = 0; x < 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 nell'editor di testo e il nome "ScreenClient.java." Questo è il programma che verrà eseguito localmente. Semplicemente si connette al computer remoto all'indirizzo specificato e salva i dati pixel che riceve sul disco rigido in formato PNG.

4

Incollare il codice seguente e salvare il lavoro:

importazione java.net.*;

importazione java.awt.*;

importazione java.awt.image.*;

importazione java.io;

importazione javax.imageio.ImageIO;

public class ScreenClient {

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

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

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

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

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

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

rgbData[x] = in.readInt();

}

in.close();

server.close();

BufferedImage screen = 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(screen, "png", new File("screen.png"));

}

}