A volte, può essere necessario permettere all'applicazione che si sta sviluppando di
rilevare gli eventi provenienti dal mouse o dalla tastiera anche quando quest'ultima viene eseguita in background; questo aspetto può essere importante se si desidera fare in modo che il programma cambi il suo comportamento a seconda delle azioni dell'utente.
Ad esempio, nei client di chat si è solito aggiungere un'indicazione sullo stato della sessione, nel caso in cui l'utente si allontani dalla postazione e quindi non si rilevino più attività provenienti dalle periferiche di input.
Il supporto tecnico di Microsoft
suggerisce di utilizzare la funzione
SetWindowsHookEx dal file di libreria
User32.ddl, che installa una procedura di monitor per osservare i cambiamenti che avvengono all'interno del sistema. Tuttavia, questa procedura opera correttamente solo se l'applicazione è mantenuta attiva dall'utente.
In un suo
articolo,
George Mamaladze propone di sostituire gli
hook presenti nel codice proposto dai tecnici Microsoft con quelli di tipo globale
WH_MOUSE_LL Hook e
WH_KEYBOARD_LL Hook per ottenere il funzionamento cercato, estraendo le informazioni ottenute per utilizzarle all'interno della classe
EventArgs, che è una classe contenitore per tutte le altre dedicate alla gestione di eventi.
Il
codice di esempio scaricabile dal link indicato nell'
articolo contiene alcune migliorie e correzioni, che rendono la procedura proposta dall'autore ancora più veloce ed efficiente.