RE:Provocar eventos en windows desde aplicacion ja
Para hacer las capturas de pantalla necesitas una instancia de la clase Robot. De momento solo he hecho la captura de la pantalla y la he metido en una ventana. Ahora mismo estoy buscando información de como se podría hacer. Para que solo se pueda ver la pantalla del servidor, tendrás que hacer un Thread.sleep(XXXX) cada cierto tiempo (el que consideres oportuno) y enviar los bytes de la imagen por el socket. Otra opcion es que tratases los eventos (teclado y ratón), y cuando se produzca dicho evento enviar la imagen actual (solución más eficiente en cuanto a ancho de banda de se refiere) El código siguiente te muestra la captura en la ventana:
import java.awt.*;
import java.awt.image.*;
import javax.swing.*;
class Captura extends JFrame
{
Robot robot;
public static void main(String[] args)
{
new Captura();
}
public Captura()
{
run();
}
public void run()
{
if (robot==null) robot = createRobot();
BufferedImage image = null;
Dimension d = Toolkit.getDefaultToolkit().getScreenSize();
image = robot.createScreenCapture(new Rectangle(0, 0, (int)d.getWidth(), (int)d.getHeight()));
JLabel pantallazo = new JLabel(new ImageIcon(image));
JScrollPane pant = new JScrollPane(pantallazo);
this.add(pant);
pant.addMouseListener(ml);
this.setTitle("Pantallazo");
this.setSize((int)(d.getWidth()+50), (int)(d.getHeight()+50));
this.show();
}
private static Robot createRobot()
{
try
{
return new Robot();
}catch(Exception e)
{
e.printStackTrace();
}
return null;
}
}