Ejemplo n.º 1
0
        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");
                }
            }
        }
Ejemplo n.º 2
0
        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();
        }