public async Task WaitAndAttachToProcess() { ProcessStatus = GameProcessStatus.ProcessNotAvailable; while (_gameProcess == null) { _gameProcess = Process.GetProcessesByName("DragonAge2").FirstOrDefault(); if (_gameProcess != null) { _gameProcess.EnableRaisingEvents = true; _gameProcess.Exited += OnGameProcessExited; break; } await Task.Delay(1000).ConfigureAwait(false); } OnGameProcessStatusChange(GameProcessStatus.WaitingUntilReadyForInjection); await _codeInjectionReadinessChecker.WaitUntilCodeIsReadyToBeInjected(_gameProcess); _gameValueService = _cameraToolsFactory.CreateGameValueService(_gameProcess); OnGameProcessStatusChange(GameProcessStatus.Attached); }
private void backgroundWorker1_DoWork(object sender, DoWorkEventArgs e) { //infinity loop while (true) { Thread.Sleep(200); //connect to process if started openGame(); //if process not started and connected if (!IsProcessLoaded) { continue; } //if process started and connected GameProcessStatus.Invoke(new MethodInvoker(delegate { GameProcessStatus.Text = "STARTED!"; GameProcessStatus.ForeColor = Color.DarkGreen; HPText.Visible = true; HPSet.Visible = true; ScoreText.Visible = true; ScoreSet.Visible = true; })); } }
private void OnGameProcessStatusChange(GameProcessStatus newStatus) { ProcessStatus = newStatus; if (newStatus != GameProcessStatus.Attached) { if (AreTacticalCameraTriggersEnabled) { DisableTacticalCamera(); } } else { EnableTacticalCameraTriggers(); } var eventHandler = ProcessStatusChanged; eventHandler?.Invoke(this, new ProcessStatusChangeEventArgs(newStatus)); }
public ProcessStatusChangeEventArgs(GameProcessStatus newStatus) { NewStatus = newStatus; }