Ciao
Anni fa avevo fatto qualcosa del genere per vedere quanto potessi spingermi prima che la mia app venisse considerata come pericolosa dall'antivirus (e ci ha messo parecchio)
Comunque, tramite .NET (codice gestito) non ci si riesce, poichè il .NET stesso te lo vieta.
Puoi però usare le chiamate PInvoke sulla user32.dll
Di suo non è troppo complesso:
- Registri un MouseHook usando una specifica chiamata della user32.dll (un po' come registrare un handle di evento)
- Nella registrazione gli dai il riferimento ad una tua funzione che è quella chiamata ad ogni evento. Intercetti quello che ti interessa e fai quel che vuoi (mouse_move, click, double_click, ...)
- Prima di chiudere l'applicazione, togli la sottoscrizione (Unhook)
Attento però al codice che metti nel metodo: se è troppo pesante, rallenti tutto il sistema.
Questo è un link in cui ci sono un po' di esempi:
https://stackoverflow.com/questions/7497024/how-to-detect-mouse-clicks
NB: Per quanto concerne la privacy hanno ragione gli altri. Che il PC sia il tuo, a casa tua, nella tua rete, ... poco importa! Se registri queste cose sei sempre colpevole, con pene pesanti! L'unica cosa che ti potrebbe salvare è quella di far firmare un foglio a chiunque usa il tuo PC dicendo che tieni traccia di tutto quello che fa sul PC... Con questo foglio FORSE puoi salvarti da una possibile denuncia