Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 7th, 2012  |  syntax: None  |  size: 2.11 KB  |  hits: 10  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. The best way to register process start time?
  2. static void Main(string[] args)
  3. {
  4.   using (ManagementEventWatcher eventWatcher =
  5.             new ManagementEventWatcher(@"SELECT * FROM
  6.    __InstanceCreationEvent WITHIN 1 WHERE TargetInstance ISA 'Win32_Process'"))
  7.   {
  8.     // Subscribe for process creation notification.
  9.     eventWatcher.EventArrived += ProcessStarted_EventArrived;
  10.     eventWatcher.Start();
  11.     Console.In.ReadLine();
  12.     eventWatcher.EventArrived -= ProcessStarted_EventArrived;
  13.     eventWatcher.Stop();
  14.   }
  15. }
  16.  
  17.  
  18. static void ProcessStarted_EventArrived(object sender, EventArrivedEventArgs e)
  19. {
  20.   ManagementBaseObject obj = e.NewEvent["TargetInstance"] as ManagementBaseObject;
  21.  
  22.   // The Win32_Process class also contains a CreationDate property.
  23.   Console.Out.WriteLine("ProcessName: {0} " + obj.Properties["Name"].Value);
  24. }
  25.        
  26. using (ManagementEventWatcher eventWatcher =
  27.           new ManagementEventWatcher(@"SELECT * FROM Win32_ProcessStartTrace"))
  28. {
  29.   // Subscribe for process creation notification.
  30.   eventWatcher.EventArrived += ProcessStarted_EventArrived;
  31.   eventWatcher.Start();
  32.   Console.Out.WriteLine("started");
  33.   Console.In.ReadLine();
  34.   eventWatcher.EventArrived -= ProcessStarted_EventArrived;
  35.   eventWatcher.Stop();
  36. }
  37.  
  38. static void ProcessStarted_EventArrived(object sender, EventArrivedEventArgs e)
  39. {              
  40.   Console.Out.WriteLine("ProcessName: {0} "
  41.           + e.NewEvent.Properties["ProcessName"].Value);    
  42. }
  43.        
  44. using (ManagementEventWatcher eventWatcher =
  45.        new ManagementEventWatcher(@"SELECT * FROM Win32_ProcessTrace"))
  46. {          
  47.   eventWatcher.EventArrived += Process_EventArrived;
  48.   eventWatcher.Start();
  49.   Console.Out.WriteLine("started");
  50.   Console.In.ReadLine();
  51.   eventWatcher.EventArrived -= Process_EventArrived;
  52.   eventWatcher.Stop();
  53. }
  54.  
  55. static void Process_EventArrived(object sender, EventArrivedEventArgs e)
  56. {
  57.   Console.Out.WriteLine(e.NewEvent.ClassPath); // Use class path to distinguish
  58.                                                // between start/stop process events.
  59.   Console.Out.WriteLine("ProcessName: {0} "
  60.       + e.NewEvent.Properties["ProcessName"].Value);    
  61. }