private void ProcessSearch() { var procList = Process.GetProcesses(); var processes = new List <Process>(procList); var processesToFind = Common.AppSettings.Settings["ProcessName"].Value.Split(';'); foreach (var procName in processesToFind) { var processesExist = processes.FindAll(p => p.ProcessName.Equals(procName.Replace(".exe", ""), StringComparison.InvariantCultureIgnoreCase)); if (processesExist.Any()) { foreach (var proc in processesExist) { var processName = proc.ProcessName; var processId = proc.Id; ProcessesToCheck.TryGetValue(processName, out ProcessDetails processDetails); if (processDetails == null) { processDetails = new ProcessDetails { Name = processName, Pid = processId, StartTime = DateTime.Now }; } // var processDetails = new ProcessDetails { Name = processName, Pid = processId, StartTime = DateTime.Now }; var totalTime = processDetails.TotalTime; Console.WriteLine("Total Time: {0} Allowed Total Time:", totalTime, AllowedTotalTime); if (totalTime >= AllowedTotalTime) { // not allowed to continue playing today.. if (!_processToKill.Contains(processDetails.Pid)) { Common.WriteToLog(string.Format("Process exceeded allowed time : {0} will close at {1}", totalTime, DateTime.Now.AddMinutes(5))); ShowInfoMessage(); _processToKill.Add(processDetails.Pid); // proc.Kill(); } } else { Common.WriteToLog(string.Format("Process [{0}] is currently running | ID: {1}", processName, processId)); ProcessesToCheck.AddOrUpdate(processName, processDetails, (newKey, oldValue) => processDetails); } } } else { Common.WriteToLog("process not found at startup"); } } }
private void processStartEvent_EventArrived(object sender, EventArrivedEventArgs e) { _eventTimer.Stop(); var processName = e.NewEvent.Properties["ProcessName"].Value.ToString().Replace(".exe", ""); var processId = int.Parse(e.NewEvent.Properties["ProcessID"].Value.ToString()); var processDetails = new ProcessDetails { Name = processName, Pid = processId, StartTime = DateTime.Now }; Common.WriteToLog(string.Format("Process [{0}] started | ID: {1}", processName, processId)); ProcessesToCheck.AddOrUpdate(processName, processDetails, (newKey, oldValue) => processDetails); SendMailNotification.SendMail(string.Format("Game {0} started at: {1}", processName, DateTime.Now), ""); UpdateProcessTimeStamp(processName, true, true, true); _eventTimer.Start(); }