Domanda

Il mio obiettivo è quello di creare un'applicazione di monitoraggio del sistema utilizzando Java. Vorrei sapere quando un utente sta facendo l'attività su un PC Windows. Il risultato sarebbe qualcosa di simile:

8:00-08:15 attività

9:12-10:29 attività

12:24-15:34 attività

Io non sono interessato a qualsiasi altra informazione (che è stato premuto il tasto, l'applicazione utilizzata, ecc). Solo l'attività degli utenti.

Questo è anche possibile in Java? Ho intenzione di correre la mia applicazione Java come un servizio. Ma, come per ottenere eventi quando un utente utilizza il computer, non ho idea da dove cominciare.


[Modifica] Ulteriori chiarimenti: io non sono interessato a informazioni delle attività, ma solo che un utente ha spostato il mouse o preme un tasto. Non mi importa quale tasto è stato premuto, fino a quando so che un tasto è stato premuto in un'applicazione da qualche parte. Anche io non mi importa per qualsiasi altra attività, ad eccezione tasto premuto e il movimento del mouse (per esempio, non mi interessa se una chiave USB viene inserita in una porta USB).

È stato utile?

Soluzione

Non è possibile controllare l'attività degli utenti direttamente da un servizio. Il servizio sarà in esecuzione in una diversa stazione finestra dalle attività degli utenti e così non avrà alcun modo per collegare in quella attività (se non attraverso i driver di filtro che avrebbe bisogno di essere scritto in C).

Quindi sarà necessario un'applicazione client che viene eseguito in desktop dell'utente e aggancia nell'attività tastiera e mouse. Si potrebbe farlo attraverso due chiamate al API di Windows SetWindowsHookEx (per tastiera basso livello e ganci di topo) mediante JNI. Per monitorare l'attività dell'applicazione avrebbe quindi bisogno di elaborare i ganci di tastiera e mouse per i messaggi.

Si potrebbe avviare l'applicazione come auto-start con l'aggiunta di una voce alla chiave Run del Registro di sistema o si potrebbe avere il monitor di servizio per il registro di sessione su eventi e avviare l'applicazione da esso. Quindi l'applicazione sessione utente potrebbe o elaborare le informazioni stesse o passare al servizio tramite un tubo o presa.

Altri suggerimenti

Che cosa si intende per 'attività degli utenti'? È necessario definire questo termine proprio primo ad iniziare anche pensare a una soluzione, soprattutto perché si dice che "premuto il tasto, l'applicazione utilizzata, etc." non sono attività.

Si potrebbe provare questo SWT Win32 Estensione . Esso consente di impostare da tastiera e mouse ganci da Java su Windows.

Questa non è direttamente supportato dalla piattaforma Java

Sarebbe molto più facile se si esplora un .NET alternativa.

Cerca catturare l'input dell'utente globale nel .net

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top