public Form1() { InitializeComponent(); thread = new Thread( () => { while (true) { if (ProcessesCheck()) { DateTime start = PS.StartTime; DateTime end; Action action = () => { label1.Text = PS.ProcessName; label2.Text = PS.StartTime.ToString(); if (PS.HasExited) { end = System.DateTime.Now; label3.Text = end.ToString(); TimeSpan dt2 = end - start; label4.Text = dt2.ToString(); MessageBox.Show(pc.closed.ToString()); } }; label1.Invoke(action); } Thread.Sleep(100); } } ); //thread.Start(); ProcessStartWatching(); ProcessInfoWatcher.RunningProcesses(); }
void ProcessStartWatching() { ProcessInfoWatcher watcher = new ProcessInfoWatcher("notepad++.exe"); watcher.Started += (object sender, EventArrivedEventArgs e) => { ManagementBaseObject targetInstanse = (ManagementBaseObject)e.NewEvent.Properties["TargetInstance"].Value; int pid = Int32.Parse((string)targetInstanse.Properties["Handle"].Value); Process process = Process.GetProcessById(pid); Debug.WriteLine(DateTime.Now.ToLocalTime() + " " + process.ProcessName); }; watcher.Terminated += (object sender, EventArrivedEventArgs e) => { ManagementBaseObject targetInstanse = (ManagementBaseObject)e.NewEvent.Properties["TargetInstance"].Value; int pid = Int32.Parse((string)targetInstanse.Properties["Handle"].Value); Debug.WriteLine(DateTime.Now.ToLocalTime() + " " + pid.ToString()); }; }