Esempio n. 1
0
        /// <summary>
        /// Keep HawkenExhaust alive if there's an update that requires UAC elevation
        /// </summary>
        private void HawkenReLauncher_OnLauncherClose(object sender)
        {
            Task waitUAC = Task.Factory.StartNew(() => GetWindowHandle("User Account Control"));

            waitUAC.Wait();

            if (SimpleGameReLauncher.IsProcessRunning(this.launcherProcessName))
            {
                this.LauncherQuitListener(this.launcherProcessName);
                return;
            }
            else
            {
                Environment.Exit(0);
            }
        }
Esempio n. 2
0
        static void Main(string[] args)
        {
            if (SimpleGameReLauncher.GetProcess("HawkenLauncher") != null)
            {
                MessageBox.Show("There can only be one instance of the HawkenLauncher open at a time");
                Environment.Exit(0);
            }

            string hawkenPath =
                Path.Combine(
                    Environment.GetFolderPath(Environment.SpecialFolder.ProgramFiles),
                    "MeteorEntertainment",
                    "Hawken"); //Assign to the default path for now.

            try
            {
                hawkenPath = Program.GetHawkenInstallPath(); //Try to get path from registry
            }
            catch (Exception)
            {
                MessageBox.Show("Hawken not found. Please install Hawken from http://www.playhawken.com/ before playing");
                Process.Start("http://www.playhawken.com/");
                Environment.Exit(0);
            }

            var notifyIcon = new NotifyIcon();

            notifyIcon.Icon    = Icon.ExtractAssociatedIcon(Application.ExecutablePath);
            notifyIcon.Text    = "Hawken is running. HawkenExhaust 0.3";
            notifyIcon.Visible = true;

            try
            {
                new HawkenReLauncher("HawkenGame-Win32-Shipping",
                                     Path.Combine(hawkenPath, "Binaries", "Win32"),
                                     "HawkenLauncher",
                                     hawkenPath).runAll();
            }
            catch (FileNotFoundException)
            {
                MessageBox.Show("Hawken not found. Please install Hawken from http://www.playhawken.com/ before playing");
                Process.Start("http://www.playhawken.com/");
                Environment.Exit(0);
            }
        }
Esempio n. 3
0
        /// <summary>
        /// This loop runs until the launcher process has quit.
        /// To close the application, handle OnLauncherClose.
        /// </summary>
        /// <param name="launcherProcessName">name of the launcher processes</param>
        protected void LauncherQuitListener(string launcherProcessName)
        {
            BackgroundWorker launcherChecker = new BackgroundWorker();

            launcherChecker.DoWork += delegate
            {
                using (Process launcher = SimpleGameReLauncher.GetProcess(launcherProcessName))
                    launcher.WaitForExit();
            };

            launcherChecker.RunWorkerCompleted += delegate
            {
                OnLauncherClose(this);
                launcherChecker.Dispose();
            };

            launcherChecker.RunWorkerAsync();
        }
Esempio n. 4
0
        /// <summary>
        /// This loop runs indefinetley looking for processName and then relaunching it.
        /// It runs on the main thread so as to keep the application alive.
        /// </summary>
        /// <param name="processName">name of the process to look for</param>
        /// <param name="processPath">path where process is located</param>
        protected void GameProcessListener(string processName, string processPath)
        {
            while (true)
            {
                Process process = null;
                while (process == null)
                {
                    if (SimpleGameReLauncher.IsProcessRunning(processName))
                    {
                        process = SimpleGameReLauncher.GetProcess(processName);
                        process.Kill();
                        process.Dispose(); //Dispose the old process.
                        break;
                    }
                    Thread.Sleep(500);
                }

                using (var gameProcess = Process.Start(Path.Combine(processPath, processName) + ".exe"))
                {
                    gameProcess.WaitForExit();
                }
            }
        }