コード例 #1
0
        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));
                }
            }
        }
コード例 #2
0
        /* 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);
            }
        }