2009-01-16 25 views
9

Estoy buscando una manera de saber en una aplicación Java (sin JNI - es una aplicación multiplataforma) puede detectar si la pantalla está bloqueada.¿Hay alguna manera de que una aplicación Java detecte si la pantalla está bloqueada?

Para información ... nuestra aplicación registra el tiempo mientras un usuario está trabajando; queremos que deje de grabar automáticamente cuando la pantalla está bloqueada en lugar de que el usuario tenga que hacerlo explícitamente.

+0

es curioso, pero tal vez también conduzca a mejores respuestas: ¿Cuál es el propósito de esto? –

+0

La aplicación registra el tiempo mientras un usuario está trabajando; queremos que deje de grabar cuando la pantalla se bloquea automáticamente en lugar de tener que hacerlo explícitamente. –

+0

Hubo una necesidad similar en Spark (mencionada en mi respuesta a continuación): Establecer la presencia a distancia cuando la estación de trabajo está bloqueada ... útil para ese cliente de mensajería instantánea multiplataforma. – VonC

Respuesta

1

No creo que haya una API para eso ni siquiera una manera de hacerlo todo. Analizar las capturas de pantalla generadas por java.awt.Robot no es ni plataforma, ni versión, ni siquiera configuración independiente, y en general, no creo que "la pantalla esté bloqueada" es un concepto bastante bien definido para usar en este sentido: en Linux, puede haber más de una "pantalla" (servidor X), puede cambiar a terminales de consola, puede tener aplicaciones que ejecutan una (o más) máquinas mostrar sus GUI en otra máquina a través de la red ...

+0

Sí, sin duda algunos problemas, pero pensé que sería capaz de definir "la pantalla está bloqueada" con respecto a una aplicación que se ejecuta en una ventana específica, ya sea X o Windows. –

1

Confirmo que parece que no hay API de Java para detectar un estado de bloqueo de pantalla.

Spark desarrollador lo intentó en 2006 (como este thread shows), pero sin dar ningún detalle sobre el específico de la implementación.
Sin embargo, es probable que implique JNI y llamada nativa a funciones como WTSQuerySessionInformation (Para detectar si está desconectado, utilice WTSQuerySessionInformation(NULL, WTS_CURRENT_SESSION, WTSConnectState) y busque WTSDisconnected).

Así, como Michael pointed out, no existe una respuesta universal "multiplataforma" (a mi leal saber y entender).

+0

entonces, ¿hay alguna manera de detectar en windows solo decir win7 – Johnydep

+0

@Johnydep que podría ser posible, pero no conozco un método específico para detectar el estado de bloqueo en Win7 – VonC

Cuestiones relacionadas