Frage

Mein Ziel ist es, eine System-Monitoring-Anwendung mit Java zu erstellen. Ich würde gerne wissen, wann ein Benutzer Aktivität auf einem Windows-PC zu tun ist. Das Ergebnis wäre so etwas wie diese:

8.00 bis 8.15 Uhr Aktivität

9.12 bis 10.29 Aktivität

12.24 bis 15.34 Aktivität

Ich bin nicht daran interessiert, alle weiteren Informationen (die Taste gedrückt wurde, Anwendung, etc.). Nur Benutzeraktivität.

Ist dies überhaupt möglich in Java? Ich plane meine Java-Anwendung als Dienst ausgeführt werden. Aber wie für Veranstaltungen bekommen, wenn ein Benutzer den Computer verwendet, habe ich keine Ahnung wo ich anfangen soll.


[Bearbeiten] Weitere Auskünfte: Ich bin nicht interessiert an den Details der Tätigkeit, nur dass ein Benutzer die Maus bewegt hat oder eine Taste gedrückt wird. Mir ist egal, welche Taste gedrückt wurde, so lange, wie ich weiß, dass ein Schlüssel in einer Anwendung irgendwo gedrückt wurde. Ich interessiere mich nicht auch für andere Aktivitäten außer Taste gedrückt und Mausbewegung (zum Beispiel, ich bin nicht daran interessiert, wenn ein USB-Stick in einem USB-Port eingesteckt ist).

War es hilfreich?

Lösung

Sie können keine Benutzeraktivität direkt von einem Dienst überwachen. Der Dienst wird in einer anderen Fenster Station von den Nutzer-Aktivitäten ausgeführt werden, und so wird keine Möglichkeit hat, in diese Tätigkeit Haken (außer durch Filtertreiber, die in C geschrieben werden müssen).

So erhalten Sie eine Client-Anwendung benötigen, die in den Desktop des Benutzers ausgeführt wird und die Haken in die Tastatur- und Mausaktivitäten. Sie würden über zwei Aufrufe der Windows-API tun, dass SetWindowsHookEx (Low Level-Tastatur und -Maus Haken) mit JNI. Zur Überwachung der Aktivität würde die Anwendung dann müssen Sie die Tastatur und die Maus Haken für Nachrichten verarbeiten.

Sie können die Anwendung als Auto-Start starten, indem Sie einen Eintrag in den Run-Schlüssel der Registrierung hinzufügen oder Sie können Ihre Service-Monitor für Sitzungsprotokoll auf Ereignisse und starten sie die Anwendung von ihm. Dann könnte die Benutzersitzung Anwendung entweder verarbeitet die Informationen selbst oder an den Dienst über eine Leitung oder Buchse passieren.

Andere Tipps

Was genau meinst du mit ‚Benutzeraktivität‘? Sie müssen diesen Begriff genau zunächst definieren, auch Denken einer Lösung beginnen, vor allem, wie Sie sagen, dass „Taste gedrückt, Anwendung usw.“ Aktivitäten sind es nicht.

Sie könnten versuchen, diese SWT Win32 Erweiterung . Es ermöglicht Ihnen, Tastatur und Maus Haken von Java auf Windows zu setzen.

Dies ist nicht direkt von der Java-Plattform unterstützt

Es wäre viel einfacher, wenn Sie eine .NET-Alternative zu erkunden.

Suchen Sie nach erfassen globale Benutzereingaben in .net

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top