Domanda

Ho il requisito di essere in grado di monitorare quanto un utente interagisce con le diverse applicazioni in esecuzione sulla propria macchina. Ciò che mi è sembrato logico è stato di tenere un registro degli eventi di focus sulla finestra con timestamp che ti dicessero quali applicazioni erano a fuoco nel corso della giornata.

Abbiamo altre cose da fare in questa applicazione che sarebbe semplice in Java. Tuttavia, non ho eseguito alcuna programmazione della GUI in Java, quindi non sono sicuro che sia possibile ottenere informazioni sulle finestre a livello di sistema operativo tramite l'API awt. È anche possibile? Ci sarebbe un altro modo per farlo attraverso JNI o ??sarebbe necessaria un'applicazione nativa per farlo?

PS: so che questo requisito sembra un po 'nefasto, ma sono qui solo per determinare se questo è tecnicamente possibile. Per favore, non sparare al messaggero, questa non era una mia idea. :)

È stato utile?

Soluzione

Gli eventi Focus potrebbero funzionare; potresti anche prendere in considerazione Windows ganci per tastiera e mouse . Con uno di questi approcci, ti consigliamo di creare una DLL (codice nativo) e utilizzare JNI per accedervi.

Altri suggerimenti

Senza ricorrere al codice nativo, non penso che questo sarà possibile.

Potresti cercare una libreria di test della finestra - alcuni di questi sono fatti per creare e intercettare eventi nativi win32.

Non credo sia possibile utilizzando AWT. Java non ha modo di accedere ai processi per le altre applicazioni.

Penso che dovresti considerare di usare un'altra lingua.
Esistono altri linguaggi come C ++, ad esempio, che sono predistinati per questo tipo di problemi :)

In pratica stai chiedendo che l'app venga inclusa nelle notifiche del sistema operativo ad altre applicazioni. Probabilmente dovrai disporre di un'app che avvii le altre app come processi secondari o utilizzare qualcosa come un'API rootkit per stabilire autorizzazioni al di sopra di quanto è concesso un'applicazione normale.

Se l'obiettivo è vedere quanto tempo un utente interagisce con la propria applicazione, è possibile ottenere alcune idee approssimative osservando il tempo CPU programmato per la propria applicazione o alcuni come guardare i ritardi tra eventi I / O e mapping quelli nelle statistiche su quanto è attivo l'utente.

Altrimenti, penso che potresti essere in grado di contattare alcuni sviluppatori di spyware per ottenere ciò di cui hai bisogno.

Se vuoi farlo da Java e non vuoi scrivere il tuo codice nativo, puoi provare SWT . Dubito che abbia dei modi indipendenti dalla piattaforma per ottenere ciò che vuoi, ma puoi cercare nelle classi specifiche di Windows, in particolare org.eclipse.swt.internal.win32.OS.

possiamo anche monitorare l'elenco delle attività di Windows per tracciare l'applicazione utilizzata da un utente, ed è semplice in java per leggere la console e puoi anche ottenere i dati di processo da essa ma avrai bisogno di una piccola elaborazione di stringhe pesanti in essa, bcz tutto il i dati che otterrai saranno nel formato stringa e devi ottenere i dati richiesti da esso, per renderli utili, se hai bisogno di ulteriore aiuto posso fornire il codice per monitorare e salvare quei dati per la traccia, ma questa soluzione non sovrascriverà l'evento window, fornirà le informazioni sull'attività

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