public void FetchProcess(string name = "game") { int.TryParse(name.Split('_').Last(), out var pId); if (pId == 0) { if (Process.GetProcessesByName(name).Length > 0) { _process = Process.GetProcessesByName(name).First() ?? throw new Exception("No process found with name: [" + name + "]."); } else { _debug.AddMessage <object>(new Message <object>( "[" + GetType().Name + "] Process: " + "name: [" + name + "]" + " not found.", MessageTypeEnum.Exception)); // MessageBox.Show("No process named [" + name + "] found."); // Annoying } if (IsProcessFetched()) { OnProcessFound?.Invoke(this, EventArgs.Empty); WatchProcessState(); _debug.AddMessage <object>(new Message <object>( "[" + GetType().Name + "] Process: " + "name: [" + name + "]" + " id: [" + Process.Id + "] fetched.", MessageTypeEnum.Event)); } else { OnNoProcessFound?.Invoke(this, EventArgs.Empty); _debug.AddMessage <object>(new Message <object>( "[" + GetType().Name + "] Process: " + "name: [" + name + "]" + " NOT fetched.", MessageTypeEnum.Event)); } } else { _process = Process.GetProcessById(pId); if (IsProcessFetched()) { OnProcessFound?.Invoke(this, EventArgs.Empty); WatchProcessState(); _debug.AddMessage <object>(new Message <object>( "[" + GetType().Name + "] Process: " + "name: [" + Process.ProcessName + "]" + " id: [" + Process.Id + "] fetched.", MessageTypeEnum.Event)); } else { OnNoProcessFound?.Invoke(this, EventArgs.Empty); _debug.AddMessage <object>(new Message <object>( "[" + GetType().Name + "] Process: " + "id: [" + pId + "]" + " NOT fetched.", MessageTypeEnum.Event)); } } }
/* search loop */ private void Search() { threadRunning = true; while (!processFound && threadRunning) { Debug.WriteLine($"Checking for process {ProcessName}."); var processes = System.Diagnostics.Process.GetProcessesByName(ProcessName); if (processes.Length > 0) { Debug.WriteLine($"Process {0} found.", ProcessName); processFound = true; processes[0].EnableRaisingEvents = true; processes[0].Exited += (sender, e) => { OnProcessExited(); }; OnProcessFound?.Invoke(); } Thread.Sleep(searchDelay); } }