Statistiche |
- Views Home Page: 156.848
- Views Posts: 374.282
- Views Gallerie: 752.216
- n° Posts: 210
- n° Commenti: 148
|
Archivio Posts |
Anno 2010
Anno 2009
Anno 2008
Anno 2007
Anno 2006
Anno 2005
|
|
Monitorare l'attività di un processo
Per monitorare un processo (avvio/chiusura) è possibile utilizzare WMI di Windows. Per questo è necessario importare il namespace System.Management.
Il seguente esempio è in C#.
using System.Management;
//Metodo per avviare il monitoring dell'evento START (avvio del processo). //Il parametro name è il nome dell'eseguibile compreso di estensione da monitorare, es: skype.exe public void StartMonitoring(string name) {
WqlEventQuery query; ManagementEventWatcher watcher; ManagementBaseObject eventObj;
try { //Query per monitorare l'evento START query = new WqlEventQuery("SELECT * FROM Win32_ProcessStartTrace WHERE ProcessName= '" + name + "'");
//Viene istanziato l'oggetto ManagementEventWatcher passandogli la query che ci interessa watcher = new ManagementEventWatcher(query);
while (true) { //Con il metodo asincrono WaitForNextEvent() mettiamo in ascolto il ManagementEventWatcher che restituisce un ManagementBaseObject quando intercetta l'evento della query. eventObj = watcher.WaitForNextEvent(); System.Windows.Forms.MessageBox.Show(name + " STARTED."); }
// Dopo aver avvisato che l'evento si è verificato è possibile bloccare l'ascolto dell'evento START. watcher.Stop(); return; } catch (ManagementException err) { System.Diagnostics.Debug.Write(err.Message); } }
//Metodo per avviare il monitoring dell'evento STOP (chiusura del processo). //Il parametro name è il nome dell'eseguibile compreso di estensione da monitorare, es: skype.exe public void StopMonitoring(string name) {
WqlEventQuery query; ManagementEventWatcher watcher; ManagementBaseObject eventObj;
try { //Come sopra con la differenza che l'evento ora è STOP. query = new WqlEventQuery("SELECT * FROM Win32_ProcessStopTrace WHERE ProcessName= '" + name + "'");
watcher= new ManagementEventWatcher(query);
while (true) { eventObj = watcher.WaitForNextEvent(); System.Windows.Forms.MessageBox.Show(name + " STOPPED."); } watcher.Stop(); return; } catch (ManagementException err) { System.Diagnostics.Debug.Write(err.Message); } }
Per essere avvisati quando un processo viene avviato e stoppato bisogna semplicemente richiamare i due metodi, esempio skype.exe :
StartMonitoring("skype.exe"); StopMonitoring("skype.exe");
In questo modo potremo leggere un messaggio quando skype viene avviato e quando viene chiuso.
mercoledì, 02 ago 2006 Ore. 20.10
|
Calendario |
| l | m | m | g | v | s | d |
---|
28 | 29 | 30 | 31 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 | 29 | 30 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 |
|
|