Foro de elhacker.net

Programación => Java => Mensaje iniciado por: Fozzie en 25 Marzo 2012, 23:26 pm



Título: Controlar uso de PCs bloqueando teclado/teclas al ejecutarse JFrame en pantalla
Publicado por: Fozzie en 25 Marzo 2012, 23:26 pm

Que tal compañeros del foro, estuve paseando por el y me parece un excelente foro ademas de que es muy útil y pues vengo con mi post para ver si puede alguien echarme una mano u orientarme.

Para fines meramente educativos.

¿Por qué? / ¿Para qué? (Si no quieren leer esto vayan abajo para saber que intento hacer)

Me encuentro haciendo un proyecto escolar, el cual es para el control de un laboratorio con algunos equipos de computo de la escuela, el caso es que tengo que controlar el acceso a estos equipos, algo así como si fuese un Cafe Internet, solo que solo es para permitir el uso del equipo después de que un profesor se registre y libere los equipos, nada de tiempos y esas cosas.

Lo que tengo trabaja así: En la pc del profesor, se ejecuta una pagina web en JSP en la red local o intranet la cual le muestra un campo para su clave de profesor para que se registre y después de esto se puedan usar los demás equipos. En las demás PC's tengo una aplicación java con el uso de Sockets que se ejecuta cuando se inicia Windows(en este caso) y abre un JFrame en pantalla completa sin barra de titulo ni botones de cerrar, minimizar y maximizar.

Ya tengo hecho parte del proyecto, en la pc del profesor tengo ya en el navegador ejecutándose la aplicación web en JSP con una pagina que le permite registrar su clave de profesor a los docentes, y después de que se registra el profesor en las demas PC's donde se ejecuta la aplicación Java Sockets se debe cerrar el JFrame inmediatamente después del registro del profesor, esto lo hago enviando un mensaje desde la aplicación web a la aplicacion Java en las otras PC's por medio de sockets y funciona bien.

Ayuda


Ahora la ayuda que les pido, es sobre ¿como impedir que no cierren o minimicen el JFrame en los demas PC's y que no puedan salir de la aplicación Java (del JFrame) hasta que no se cierre despues del registro del profesor?


Por ahora cuando se ejecuta el JFrame al inicio de Windows no pueden cerrarlo con Alt + F4 ni con los botones ya que se los quite, pero si pueden usar Alt + Tab y brincar a otra aplicación, tambien pueden evadir el JFrame mimizandolo con las teclas Inicio + D o cerrar la aplicación completa con Ctrl + Alt + Supr 


¿Saben como puedo bloquear estas teclas de funciones para que no las usen para salir de la aplicación? o bien ¿como bloquear el teclado completo y que al cerrarse la aplicación/JFrame se active?

¿Alguna forma o método para que la aplicación este siempre al frente  y no puede cerrarse o minimizarse?


He intentado impedir el uso de la tecla Inicio con el evento KeyPressed() y KeyTyped() de esta forma:

Código:

if(evt.getKeyCode() == KeyEvent.VK_WINDOWS){//o también con VK_HOME
            evt.consume();
            System.out.println("Presiono Inicio");
           
        }

//o así

       if(keyCode==524){
          System.out.println("Press Inicio");
          //JOptionPane.showMessageDialog(null, "Debe esperar a que el profesor Libere los Equipos");
            //pantalla.setFullScreenWindow(this);
            evt.consume();
        }


pero al presionar la tecla inicio abre el menú de inicio o Alt + Tab y puede abrir otra aplicación o bien usar el equipo, y esto es precisamente lo que busco hacer, impedir que salga de la aplicación sino hasta que el profesor se registre.

Para impedir que cierren el JFrame utilice DO_NOTHING_ON_CLOSE pero no se que usar para Alt + Tab y para Inicio + D , he escuchado sobre la clase Robot pero hasta no e encontrado algo para impedir el uso de estas funciones de teclas...

No les pido que lo hagan por mi sino que me apoyen u orienten, de como solucionarlo de antemano gracias por su ayuda, saludos.


Título: Re: Controlar uso de PCs bloqueando teclado/teclas al ejecutarse JFrame en pantalla
Publicado por: Valkyr en 29 Marzo 2012, 23:10 pm
La solución más sencilla que se me ocurre (no habría que modificar el programa) es que deshabilites los atajos de teclado. En esta página se explica un poco como hacerlo: http://culturacion.com/2011/09/deshabilitar-atajos-de-teclado-en-windows/

Si no te vale responde por si a alguna otra persona se le ocurre alguna manera de hacerlo.

Saludos.


Título: Re: Controlar uso de PCs bloqueando teclado/teclas al ejecutarse JFrame en pantalla
Publicado por: Fozzie en 30 Marzo 2012, 00:28 am

Muchas gracias por responder Valkyr, creí que nadie contestaría, voy a probar lo que me sugieres en un rato mas y comento como me fue, espero funcione, sigo buscando y voy a ver si funciona lo que mencionas.


Gracias y saludos.


Título: Re: Controlar uso de PCs bloqueando teclado/teclas al ejecutarse JFrame en pantalla
Publicado por: Proteus1989 en 30 Marzo 2012, 15:43 pm
Estuve mirando algo parecido, pero yo lo que quería es que me detectase los eventos de teclado fuera del JFrame y no encontré nada.
Me guardo el truco de los atajos de teclado. Pero sabéis de alguna librería que lo gestione desde java?
Esto con JNI se podría hacer mejor?