Detectar pantalla bloqueada(Windows) con Java

Hola que tal amigos,

En una de nuestra aplicaciones tenemos que detectar cuando el usuario bloquea su PC utilizando Windows + L o bien automaticamente por inactividad, no importa que sea un simple system.out en consola que muestre que la pantalla fue bloqueada

al principio crei que esta tarea que se me fue asignada seria facil pero tengo 2 dias buscando informacion y sorpresivamente no encuentro una solucion para esto, lo unico que encuentro es tener que utilizar JNI pero la verdad parece bastante complejo.

porfavor todas sus ideas u opiniones me seran de gran ayuda, saludos

Opciones de visualización de comentarios

Seleccione la forma que prefiera para mostrar los comentarios y haga clic en «Guardar las opciones» para activar los cambios.
Imagen de Cid

Aquí tienes un comienzo

Hola checa esta conversación link digo no es la solución pero te dan un tip sobre detección de teclas presionadas bueno creo que hablan de swing y awt si es web tendrías que usar algún script o plug in generalmente es algo de javascript.

Imagen de jasistemas

Pues si fuera con .net

Pues si fuera con .net buscaria la API apropiada para detectar el cambio o la actividad:
http://masalladevisualbasic.galeon.com/lasapiwin.html

Imagen de alucard1

Utiliza la interfaz KeyListener

Aqui un ejemplo, toda lamagia es de la interfaz keyListener

Saludos !!

package org.javamexico;

import java.awt.Color;
import java.awt.event.KeyEvent;
import java.awt.event.KeyListener;
import javax.swing.JFrame;
import javax.swing.JTextArea;

public class TeclasOprimidas extends JFrame implements KeyListener{
       
         private String linea1 = "", linea2 = "", linea3 = "";
         private JTextArea areaTexto;
         
         public TeclasOprimidas(){
                 super( "Probar los eventos del teclado" );
                 areaTexto = new JTextArea( 10, 15 );
             areaTexto.setText( "Oprima cualquier tecla :)" );
             areaTexto.setEnabled( false );
             areaTexto.setDisabledTextColor( Color.red );
             getContentPane().add( areaTexto );
         
             //Esto es lo que permitira procesas las acciones del teclado
             addKeyListener( this );  
               
            setSize( 350, 100 );
            setVisible( true );
         }

        @Override
        public void keyPressed(KeyEvent evento) {
                linea1 = "Se oprimió tecla: " + evento.getKeyText( evento.getKeyCode() );
            establecerLineas2y3( evento );
        }

        @Override
        public void keyReleased(KeyEvent evento) {
                linea1 = "Se soltó tecla: " + evento.getKeyText( evento.getKeyCode() );
               establecerLineas2y3( evento );
        }

        @Override
        public void keyTyped(KeyEvent evento) {
                linea1 = "Se escribió tecla: " + evento.getKeyChar();
               establecerLineas2y3( evento );
               
        }
       
        private void establecerLineas2y3( KeyEvent evento )
    {
       linea2 = "Esta tecla " + ( evento.isActionKey() ? "" : "no " ) +
          "es una tecla de acción";
 
       String temp = evento.getKeyModifiersText( evento.getModifiers() );
 
       linea3 = "Teclas modificadoras oprimidas: " +
          ( temp.equals( "" ) ? "ninguna" : temp );
 
       areaTexto.setText( linea1 + "\n" + linea2 + "\n" + linea3 + "\n" );
    }
       
         public static void main( String args[] )
            {
               TeclasOprimidas aplicacion = new TeclasOprimidas();
               aplicacion.setDefaultCloseOperation( JFrame.EXIT_ON_CLOSE );
            }

}