public MainWindow(string[] args) { InitializeComponent(); notifyIcon.Visible = false; // check if GTA process is running if (args.Length > 0) // high iq arg handler { foreach (string arg in args) { switch (arg) { case "/nocheck": // don't perform check for process processCheckFlag = false; break; case "/hide": // start in systray notifyIcon.Visible = true; this.WindowState = FormWindowState.Minimized; this.Hide(); this.Visible = false; // for some reason Hide() doesn't always work this.ShowInTaskbar = false; break; default: break; } } } if (processCheckFlag) { ProcessHandler.CheckProcess(); } KeybindHandler.RegisterHotkeys(this); InitialiseBackgroundWorkers(); balloonStatus = true; }
private void ProcessSuspendWorker_DoWork(object sender, DoWorkEventArgs args) { BackgroundWorker worker = sender as BackgroundWorker; if (!ProcessHandler.CheckProcess()) { MessageBox.Show("The GTA game process could not be found. " + "Maybe try relaunching this program as an administrator.", "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); return; } try { ProcessHandler.SuspendProcess(); if (soundCuesTTS) { soundHandler.speech.SpeakAsync("GTA suspended, one moment."); } for (int i = 0; i < 10; i++) { if (soundCuesBeep) { soundHandler.PlayBeep(false); Thread.Sleep(900); // sound will take 100ms } else { Thread.Sleep(1000); } worker.ReportProgress((i + 1) * 10); } ProcessHandler.ResumeProcess(); if (soundCuesTTS) { soundHandler.speech.SpeakAsync("GTA resumed."); } else if (soundCuesBeep) { soundHandler.PlayBeep(true); } Thread.Sleep(500); } catch (Exception e) { if (e is IndexOutOfRangeException) { MessageBox.Show("A process could not be found. Is GTA running?", "Warning", MessageBoxButtons.OK, MessageBoxIcon.Warning); } else { MessageBox.Show("Something went wrong. " + "Please make an issue on the Github " + "repository and include this error " + "message as a screenshot. Exception: " + e.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error); } } }