Question

Je suis obligé de pouvoir suivre le degré d'interaction d'un utilisateur avec les différentes applications en cours d'exécution sur sa machine. Ce qui me semblait logique, c’est de garder un journal des événements de la fenêtre avec des horodatages qui indiqueraient quelles applications ont été mises au point au cours de la journée.

Nous avons d'autres choses à faire dans cette application qui seraient simples en Java. Cependant, comme je n'ai pas encore programmé d'interface graphique en Java, je ne sais pas s'il est possible d'obtenir des informations sur les fenêtres au niveau du système d'exploitation via l'API awt. Est-ce que c'est possible? Y aurait-il un autre moyen de faire cela via JNI ou une application native serait-elle nécessaire?

PS: Je sais que cette exigence semble un peu néfaste, mais je ne suis ici que pour déterminer si cela est techniquement possible. S'il vous plaît, ne tirez pas sur le messager, ce n'était pas mon idée. :)

Était-ce utile?

La solution

Les événements ciblés peuvent fonctionner; vous pouvez également envisager Windows crochets pour clavier et souris . Avec l’une de ces approches, vous souhaiterez créer une DLL (code natif) et utiliser JNI pour y accéder.

Autres conseils

Sans recourir au code natif, je ne pense pas que cela sera possible.

Vous pouvez rechercher une bibliothèque de tests de fenêtres - certaines d'entre elles sont conçues pour créer et intercepter des événements natifs Win32.

Je ne pense pas que ce soit possible avec AWT. Java n'a aucun moyen d'accéder aux processus pour les autres applications.

Je pense que vous devriez envisager d'utiliser une autre langue.
Il existe d’autres langages tels que C ++, par exemple, prédistinés pour ce type de problèmes:)

Vous demandez en gros que votre application soit incluse dans les notifications du système d'exploitation destinées à d'autres applications. Vous devrez probablement avoir une application qui lance les autres applications en tant que processus enfants ou utiliser quelque chose comme une API de rootkit pour établir des autorisations supérieures à celles accordées à une application normale.

Si le but est de voir combien de temps un utilisateur interagit avec votre application, vous pourriez avoir quelques idées approximatives en regardant le temps de calcul programmé pour votre application ou en examinant les délais entre les événements d'E / S et le mappage. ceux en statistiques sur le degré d'activité de l'utilisateur.

Sinon, je pense que vous pourrez peut-être contacter des développeurs de logiciels espions pour obtenir ce dont vous avez besoin.

Si vous voulez faire cela depuis Java et que vous ne voulez pas écrire votre propre code natif, vous pouvez essayer SWT . Je doute qu’il existe des moyens indépendants de la plate-forme d’accomplir ce que vous voulez, mais vous pouvez fouiller dans les classes spécifiques à Windows, en particulier org.eclipse.swt.internal.win32.OS.

nous pouvons également surveiller la liste des tâches de Windows pour tracer l'application utilisée par un utilisateur, et sa console simple en Java pour lire la console. Vous pouvez également obtenir les données de processus à partir de cette dernière, mais vous aurez besoin d'un peu de traitement de chaîne lourde, bcz tous les Les données que vous obtenez seront dans le format de chaîne et vous devez obtenir vos données requises, pour les rendre utiles, si vous avez besoin d'aide, je peux donner le code qui surveille et enregistre ces données pour le traçage, mais cette solution ne remplacera pas l'événement window, sa donnera les informations de la tâche,

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