Java - Provocar eventos en windows desde aplicacion java

 
Vista:

Provocar eventos en windows desde aplicacion java

Publicado por Ivan (10 intervenciones) el 19/02/2007 10:40:45
Hola,

Estoy desarrollando un programa en Java que consiste en la realización de un escritorio remoto. Yo lo que quiero saber es como provocar los eventos en las ventanas propias de windows, es decir, que el usuario remoto pulse sobre inicio, y en el pc local se despliegue el menú Inicio. Muchas gracias.
Valora esta pregunta
Me gusta: Está pregunta es útil y esta claraNo me gusta: Está pregunta no esta clara o no es útil
0
Responder

RE:Provocar eventos en windows desde aplicacion ja

Publicado por VICTOR BLANCO (9 intervenciones) el 19/02/2007 17:47:08
Hola estoy intentando hacer lo mismo. Y estoy bastante perdido me ¿prodrías orientar?

Me harias un gran favor.

Muchas gracias de antemano
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Provocar eventos en windows desde aplicacion ja

Publicado por Iván (10 intervenciones) el 19/02/2007 18:19:14
En que quieres que te ayude? Si eres más claro te podría echar una mano.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Provocar eventos en windows desde aplicacion ja

Publicado por victor (9 intervenciones) el 21/02/2007 10:47:57
Perdon,

Te explico. tengo que hacer para una empresa el mismo proyecto que tu, un escritorio remoto. El tema de los socket mas o menos lo tengo bastante dominado. Lo que no se como hacer es que te envie lo que esta viendo el usuario en ese momento. Me imagino que lo que hagas es capturar la pantalla del servidor(el usuario) y mandarla al cliente (el administrador o help desk) esa parte no tengo ni idea como hacerla, y ya no como hacerla si no que sea lo mas optimo posible.

Si me pudieras ayudar con algún algoritmo o alguna clase te estaria muy agradecido. El tema siguiente será lo que tu estas preguntado ahora mismo. El tema de los eventos. Si llego donde tu estas y todavia no sabes como hacerlo si quieres nos podemos poner en contacto con skype o msn para ayudarnos mutuamente.

Muchas gracias de antemano, un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Provocar eventos en windows desde aplicacion ja

Publicado por Iván (10 intervenciones) el 21/02/2007 11:02:07
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;
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Provocar eventos en windows desde aplicacion ja

Publicado por VICTOR BLANCO (9 intervenciones) el 21/02/2007 11:54:07
OK gracias

Ahora la historia es pasar la imagen atraves del socket (creo que eso es facil), y mostrarla en la ventana del cliente(help desk). El siguiente paso una vez que veamos la pantalla del servidor será mandar las coordenadas del raton del cliente al raton del servidor (esto creo que será mas dificil.) hay que ver como darle las coordenadas al raton del servidor. Esta tarde intentaré la primera parte si lo consigo te pongo aki. si quieres como arriba aparece mi correo mandame tu comentario a mi correo no hay pega ninguna.

Un saludo.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Provocar eventos en windows desde aplicacion ja

Publicado por Iván (10 intervenciones) el 21/02/2007 12:00:35
Te contesto aquí porque así más gente que no sepa como hacerlo puede verlo.

Para las coordenadas del ratón, puedes poner un listener del ratón (MouseListener) y tratan los métodos. Cuando se mueva el ratón, coges las coordenadas y las envías por el socket, en el otro lado si tienes otro objeto Robot puedes llevar el ratona a esas coordenadas de la siguiente forma:

robot.mouseMove(int x, int y);

Échale una ojeada a la clase Robot en el api, hay varios métodos tanto para el ratón como para el teclado.

Para enviar la imagen por el socket, tienes que obtener los bytes de la imagen y enviarlos por el outputStream.

Un saludo
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Provocar eventos en windows desde aplicacion ja

Publicado por VICTOR BLANCO (9 intervenciones) el 21/02/2007 16:04:00
Ok,

y conoces alguna clase que me diera informacion del servidor como memoria ram, disco duro, S.O., processos en ejecucion etc..

Como ya te habras dado cuenta, el programa seria para una empresa de hel desk y toda esa informacion les vendría muy bien.

Mucha gracias, me estas siendo de gran ayuda.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Provocar eventos en windows desde aplicacion ja

Publicado por Iván (10 intervenciones) el 21/02/2007 21:24:20
Para obtener el sistema operativo tienes que hacer lo siguiente:

import java.lang.management.*;

OperatingSystemMXBean osMXB = ManagementFactory.getOperatingSystemMXBean();
System.out.println("Arc = "+osMXB.getArch());//--> saca la arquitectura (x86)
System.out.println("Version = "+osMXB.getVersion());//--> saca la version (5.1)
System.out.println("Nombre = "+osMXB.getName());// --> saca el SO ( Windows XP)

Si le echas una ojeada a la clase ManagementFactory probablemente saques algo mas. Si consigues sacar las cosas que dices, ponlo aquí que me gustaría saber como se hacen.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Provocar eventos en windows desde aplicacion ja

Publicado por VICTOR (9 intervenciones) el 22/02/2007 13:24:12
He estando viendo que con la clase OperatingSystemMXBean de la libreria com.sun.management.OperatingSystemMXBean puedes ver la memoria fisica y virtual.

lo que no he logrado ver es que procesador tiene la maquina se te ocurre algo??
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Provocar eventos en windows desde aplicacion ja

Publicado por Iván (10 intervenciones) el 22/02/2007 13:35:05
Mediante esta opcion se obtienen muchas caracteristicas del PC. Solo tendrias que parsear el resultado.

System.getProperties();
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Provocar eventos en windows desde aplicacion ja

Publicado por victor (9 intervenciones) el 22/02/2007 14:17:02
ya la he probado, me dice casi toda la informacion que necesito solo me falta la velocidad del procesado el tamaño del disco duro. Y si pudiera si tiene grabadora etc...
cuando tenga estos datos pondre el codigo de la clase entera aki.

Muchas gracias te agradezco mucho la ayuda que me estas dando
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Provocar eventos en windows desde aplicacion ja

Publicado por VICTOR BLANCO (9 intervenciones) el 26/02/2007 13:42:59
Hola, he estado buscando como sacar la capacidad del disco duro pero nada de nada y tan poco la velocidad del procesador ¿se te ocurre algo?
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Provocar eventos en windows desde aplicacion ja

Publicado por Iván (10 intervenciones) el 26/02/2007 13:47:57
La otra vez cuando lo preguntaste estuve mirando como se podría hacer, pero no conseguí nada. No se si en el registro de windows se almacenara dicha información.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Provocar eventos en windows desde aplicacion ja

Publicado por Iván (10 intervenciones) el 28/02/2007 14:13:08
El siguiente codigo te despliega el menu del boton inicio, igual te sirve de algo.

package EscritorioRemoto;

class Captura2 extends JFrame
{
Robot robot;

public static void main(String[] args)
{
new Captura2();
}
public Captura2()
{
run();
}

public void run()
{
if (robot==null) robot = createRobot();

Dimension d = Toolkit.getDefaultToolkit().getScreenSize();

robot.mouseMove(10, (int)(d.getHeight()-15));
robot.mousePress(InputEvent.BUTTON1_MASK);
robot.mouseRelease(InputEvent.BUTTON1_MASK);

}


private static Robot createRobot()
{
try
{
return new Robot();
}catch(Exception e)
{
e.printStackTrace();
}
return null;
}
}
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar
sin imagen de perfil

RE:Provocar eventos en windows desde aplicacion ja

Publicado por edgardo (1 intervención) el 23/08/2007 18:24:57
no seria mejor usar los metodos de Robot para apretar la tecla windows que es la combinacion de CTR+ESC (control + escape)
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar

RE:Provocar eventos en windows desde aplicacion ja

Publicado por Iván (10 intervenciones) el 23/08/2007 18:30:06
Para el mero hecho de que se despliegue el menu de inicio si, pero lo que yo puse fue un ejemplo de como provocar eventos del raton, ya que intentabamos hacer un escritorio remoto.
Valora esta respuesta
Me gusta: Está respuesta es útil y esta claraNo me gusta: Está respuesta no esta clara o no es útil
0
Comentar