示例#1
0
        public void Start()
        {
            Task.Run(async() =>
            {
                while (true)
                {
                    try
                    {
                        var foregroundProcess = ProcessesHelper.GetForegroundProcess();
                        if (foregroundProcess == null)
                        {
                            continue;
                        }

                        if (_xboxController.IsLeftShoulderPressed &&
                            _xboxController.LeftTrigger > 0 &&
                            _xboxController.IsRightShoulderPressed &&
                            _xboxController.RightTrigger > 0 &&
                            _xboxController.IsAPressed)
                        {
                            foreach (var gameProcess in _gameProcesses)
                            {
                                if (foregroundProcess.ProcessName == gameProcess)
                                {
                                    Console.WriteLine($"========================================");
                                    Console.WriteLine($"Foreground process : {foregroundProcess.ProcessName}");
                                    ProcessesHelper.Stop(gameProcess);
                                    Console.WriteLine($"{gameProcess} killed");
                                    await Task.Delay(1000);

                                    var oldDisplay = _displayService.GetCurrent();
                                    var newDisplay = _displayService.GetHigherDisplay();

                                    if (oldDisplay.Width < newDisplay.Width)
                                    {
                                        Console.WriteLine($"old display : {oldDisplay.Width} x {oldDisplay.Height}");
                                        _displayService.SetCurrent(newDisplay);
                                        Console.WriteLine($"new display : {newDisplay.Width} x {newDisplay.Height}");
                                    }
                                }
                            }
                        }
                    }
                    catch (Exception ex)
                    {
                    }

                    await Task.Delay(500);
                }
            });

            Task.Run(() =>
            {
                XboxController.StartPolling();
            });
        }
        protected override string OnRequest(string requestString)
        {
            try
            {
                var requestStringHeader = requestString.Substring(0, Math.Min(100, requestString.Length)).ToUpper();

                //index
                if (requestStringHeader.StartsWith("GET / "))
                {
                    return(HtmlResult(GetIndexContent()));
                }

                //additional files
                if (requestStringHeader.StartsWith("GET /"))
                {
                    var ts   = requestString.Split(new char[] { ' ' });
                    var path = ts[1].Substring(1);
                    return(CreateFileResult(path));
                }

                //commands
                if (requestStringHeader.StartsWith("POST /DISALLOWGAMES "))
                {
                    MainService.Instance.ControlService.DisableGames();
                    return(RedirectResult("/"));
                }
                if (requestStringHeader.StartsWith("POST /ALLOWGAMES "))
                {
                    MainService.Instance.ControlService.EnableGames();
                    return(RedirectResult("/"));
                }
                if (requestStringHeader.StartsWith("POST /UPDATE "))
                {
                    var requestParams = GetParametersFromPost(requestString);
                    MainService.Instance.ControlService.UpdateTimeCounter(int.Parse(requestParams["amount"]));
                    return(RedirectResult("/"));
                }
                if (requestStringHeader.StartsWith("POST /GETPROCESSES "))
                {
                    var processes = ProcessesHelper.GetProcesses();
                    return(JsonResult(processes.Select(t =>
                                                       new { name = t.FileName, path = t.FilePath, user = t.UserName }
                                                       ).ToList()));
                }

                //default
                return(HtmlResult("", HttpStatusCode.NotFound));
            }
            catch (Exception ex)
            {
                return(HtmlResult(ex.ToString(), HttpStatusCode.InternalServerError));
            }
        }
示例#3
0
        private static async Task RebootSteamAsync()
        {
            var processes = ProcessesHelper.GetProcesses()
                            .Where(obj => obj.ProcessName.ContainsIgnoreCase("steam") && !obj.ProcessName.Contains(Assembly.GetExecutingAssembly().GetName().Name));

            foreach (var process in processes)
            {
                try
                {
                    process.Kill();
                }
                catch (Exception)
                {
                    // IGNORE
                }
            }

            await Task.Delay(TimeHelper.FromSecondsToMilliseconds(2));

            ProcessesHelper.Start($@"{steamDirectory}\steam.exe");
        }
示例#4
0
        //关掉所有nginx的进程,格式必须这样,有空格存在  taskkill /IM  nginx.exe  /F



        /// <summary>
        /// 启动服务
        /// </summary>
        /// <returns></returns>
        public void StartService()
        {
            try
            {
                if (ProcessesHelper.IsCheckProcesses(_nginxFileName))
                {
                    LogHelper.WriteLog("nginx进程已经启动过了");
                }
                else
                {
                    var sinfo = new ProcessStartInfo
                    {
                        FileName         = _nginxFilePath,
                        Verb             = "runas",
                        WorkingDirectory = _workingDirectory,
                        Arguments        = _arguments
                    };
#if DEBUG
                    sinfo.UseShellExecute = true;
                    sinfo.CreateNoWindow  = false;
#else
                    sinfo.UseShellExecute = false;
#endif
                    using (var process = Process.Start(sinfo))
                    {
                        //process?.WaitForExit();
                        _processId = process.Id;
                    }
                }
            }
            catch (Exception e)
            {
                LogHelper.WriteLog(e.Message);
                MessageBox.Show(e.Message);
            }
        }
示例#5
0
 /// <summary>
 /// 关闭nginx所有进程
 /// </summary>
 /// <returns></returns>
 public void StopService()
 {
     ProcessesHelper.KillProcesses(_nginxFileName);
 }
示例#6
0
 void CheckProcesses()
 {
     var processes = ProcessesHelper.GetProcesses();
 }
示例#7
0
 public void UpdateProcessInObservedProcessesList(string processName, TimeSpan allowedTime)
 {
     this.processesListService.ChangeAllowedTimeForWatchedProcess(ProcessesHelper.GetRealProcessName(processName), allowedTime);
 }
示例#8
0
 public void RemoveProcessFromObservedProcessesList(string processName)
 {
     this.processesListService.RemoveWatchedProcess(ProcessesHelper.GetRealProcessName(processName));
 }
示例#9
0
        //public IEnumerable<Process> GetAllRunningProcesses() {
        //    return Process.GetProcesses();
        //}

        public void AddProcessToObservedProcessesList(string processName, TimeSpan allowedTime)
        {
            this.processesListService.AddWatchedProcess(ProcessesHelper.GetRealProcessName(processName), allowedTime);
        }
示例#10
0
 public bool KillProcess(string name)
 {
     return(ProcessesHelper.KillProcess(name));
 }