Pregunta

Mi objetivo es crear una aplicación de control de la instalación de Java. Me gustaría saber cuando un usuario está haciendo la actividad en un PC con Windows. El resultado sería algo como esto:

8:00-08:15 actividad

09:12-10:29 actividad

12:24-15:34 actividad

No estoy interesado en cualquier otra información (que se pulsa la tecla, la aplicación utilizada, etc.). la actividad del usuario solamente.

Es esto posible en Java? Tengo la intención de ejecutar mi aplicación Java como servicio. Pero como para hacer que los eventos cuando un usuario utiliza el ordenador, no tengo idea de por dónde empezar.


[Editar] Cualquier aclaración adicional: No estoy interesado en los detalles de la actividad, solo que un usuario ha movido el ratón o pulsar una tecla. No me importa qué tecla se ha pulsado, siempre y cuando sé que se ha pulsado una tecla en una aplicación en alguna parte. Asimismo, no importa para cualquier otra actividad, excepto tecla pulsada y el movimiento del ratón (por ejemplo, no me interesa si es una llave USB se inserta en un puerto USB).

¿Fue útil?

Solución

No se puede supervisar la actividad del usuario directamente desde un servicio. El servicio se ejecuta en una estación de ventana diferente de las actividades de los usuarios y por lo tanto no tendrá forma de gancho en que la actividad (excepto a través de los controladores de filtro que tendrían que ser escrito en C).

Por lo que tendrá una aplicación cliente que se ejecuta en el escritorio del usuario y engancha en la actividad del teclado y el ratón. Se podría hacer eso a través de dos llamadas a la API de Windows SetWindowsHookEx (para teclado nivel bajo y ganchos de ratón) usando JNI. Para supervisar la actividad de la aplicación sería entonces necesario para procesar los ganchos de teclado y ratón para los mensajes.

Se puede iniciar la aplicación como de inicio automático añadiendo una entrada a la clave Run del registro o podría tener su monitor servicio de registro de la sesión de eventos y iniciar la aplicación de ella. A continuación, la aplicación de sesión de usuario o bien podría procesar la información en sí misma o pasarlo al servicio a través de un tubo o de tubo.

Otros consejos

¿Qué es exactamente lo que quiere decir con 'la actividad del usuario'? Es necesario definir con precisión el término primero incluso empezar a pensar en una solución, especialmente en lo que se dice que "la tecla pulsada, la aplicación utilizada, etc." no son actividades.

Se puede probar este SWT Win32 Extensión . Se le permite configurar teclado y ratón ganchos de java en las ventanas.

Esto no es compatible directamente por la plataforma Java

Sería mucho más fácil si usted explora una alternativa .NET.

Búsqueda de capturar la entrada de usuario global en .NET

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top