1
0
mirror of https://github.com/ncblakely/GiantsTools synced 2024-11-22 14:15:37 +01:00
GiantsTools/Giants.Launcher/Program.cs

56 lines
1.8 KiB
C#
Raw Normal View History

2020-08-10 06:58:51 +02:00
using System;
using System.Diagnostics;
using System.IO;
using System.Linq;
using System.Threading;
using System.Windows.Forms;
2020-08-10 06:58:51 +02:00
namespace Giants.Launcher
{
static class Program
{
/// <summary>
/// The main entry point for the application.
/// </summary>
[STAThread]
static void Main()
{
using (Mutex mutex = new Mutex(true, "GiantsLauncherMutex"))
{
if (!mutex.WaitOne(TimeSpan.Zero, true))
{
// Another instance must be running, switch the first process we find with the same name to the foreground:
string appName = Process.GetCurrentProcess().MainModule.FileName;
2020-08-10 06:58:51 +02:00
Process[] processes = Process.GetProcessesByName(Path.GetFileNameWithoutExtension(appName));
Process otherProcess = processes.FirstOrDefault(p => p.Id != Process.GetCurrentProcess().Id);
if (otherProcess != null)
{
NativeMethods.SetForegroundWindow(otherProcess.MainWindowHandle);
}
Application.Exit();
return;
}
Application.EnableVisualStyles();
Application.SetCompatibleTextRenderingDefault(false);
try
{
Application.Run(new LauncherForm());
}
catch (Exception ex)
{
MessageBox.Show(
text: $"Unable to start launcher: {ex.Message}",
caption: "Fatal Error",
buttons: MessageBoxButtons.OK,
icon: MessageBoxIcon.Error);
}
2020-08-10 06:58:51 +02:00
}
}
}
}