Question

Mon but est de créer une application de surveillance du système en utilisant Java. Je voudrais savoir quand un utilisateur est en train de faire l'activité sur un PC Windows. Le résultat serait quelque chose comme ceci:

08h00 - 08h15 activité

09h12 - 10h29 activité

12h24 - 15h34 activité

Je ne suis pas intéressé par toute autre information (qui touche a été pressée, l'application utilisée, etc.). Seule l'activité de l'utilisateur.

Est-ce même possible en Java? Je prévois d'exécuter mon application Java en tant que service. Mais pour obtenir des événements lorsqu'un utilisateur utilise l'ordinateur, je ne sais pas où commencer.


[Modifier] Des précisions supplémentaires: Je ne suis pas intéressé par les Détails de l'activité, seulement qu'un utilisateur a déplacé la souris ou appuyé sur une touche. Je me fiche de ce qui touche a été pressée, tant que je sais qu'une clé a été pressé dans une application quelque part. Je ne me soucie pas aussi pour toute autre activité, sauf touche enfoncée et le mouvement de la souris (par exemple, je ne suis pas intéressé si une clé USB est insérée dans un port USB).

Était-ce utile?

La solution

Vous ne pouvez pas surveiller l'activité des utilisateurs directement à partir d'un service. Le service sera en cours d'exécution dans une station de fenêtre différente des activités des utilisateurs et aura ainsi aucun moyen de crochet dans cette activité (sauf par les pilotes de filtre qui doivent être écrites en C).

Vous aurez besoin d'une application client qui fonctionne dans le bureau de l'utilisateur et des crochets dans le clavier et la souris activité. Vous le faire via deux appels à l'API Windows SetWindowsHookEx (pour clavier de bas niveau et des crochets de souris) en utilisant JNI. Pour surveiller l'activité de l'application devrait alors traiter le clavier et la souris crochets pour les messages.

Vous pouvez lancer l'application en démarrage automatique en ajoutant une entrée à la clé Run du Registre ou vous pourriez avoir votre moniteur de service pour journal de session sur les événements et lancer l'application de celle-ci. Ensuite, la demande de session utilisateur peut soit traiter l'information elle-même ou de le transmettre au service par l'intermédiaire d'un tuyau ou d'une douille.

Autres conseils

Que voulez-vous dire par «activité de l'utilisateur? Vous devez définir ce terme précisément premier à même commencer à penser à une solution, d'autant plus que vous dites que « touche enfoncée, l'application utilisée, etc. » ne sont pas des activités.

Vous pouvez essayer cette SWT Win32 Extension . Il vous permet de configurer le clavier et la souris crochets de Java sur Windows.

Ce n'est pas directement pris en charge par la plate-forme java

Il serait beaucoup plus facile si vous explorez une alternative .NET.

Rechercher capture entrée globale de l'utilisateur dans .net

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top