82 lines
2.2 KiB
C#
82 lines
2.2 KiB
C#
using System;
|
|
using System.Collections.Generic;
|
|
using System.Configuration;
|
|
using System.Data;
|
|
using System.Linq;
|
|
using System.Threading.Tasks;
|
|
using System.Windows;
|
|
|
|
using Microsoft.VisualBasic.ApplicationServices;
|
|
|
|
namespace AffdexMe
|
|
{
|
|
/// <summary>
|
|
/// Interaction logic for App.xaml
|
|
/// </summary>
|
|
public partial class App : Application
|
|
{
|
|
}
|
|
|
|
|
|
/// <summary>
|
|
/// From reference source: https://msdn.microsoft.com/en-us/library/vstudio/ms771662(v=vs.90).aspx
|
|
/// </summary>
|
|
public class EntryPoint
|
|
{
|
|
[STAThread]
|
|
public static void Main(string[] args)
|
|
{
|
|
SingleInstanceManager manager = new SingleInstanceManager();
|
|
manager.Run(args);
|
|
}
|
|
}
|
|
|
|
// Using VB bits to detect single instances and process accordingly:
|
|
// * OnStartup is fired when the first instance loads
|
|
// * OnStartupNextInstance is fired when the application is re-run again
|
|
// NOTE: it is redirected to this instance thanks to IsSingleInstance
|
|
public class SingleInstanceManager : WindowsFormsApplicationBase
|
|
{
|
|
SingleInstanceApplication app;
|
|
|
|
public SingleInstanceManager()
|
|
{
|
|
this.IsSingleInstance = true;
|
|
}
|
|
|
|
|
|
protected override bool OnStartup(Microsoft.VisualBasic.ApplicationServices.StartupEventArgs e)
|
|
{
|
|
// First time app is launched
|
|
app = new SingleInstanceApplication();
|
|
app.Run();
|
|
return false;
|
|
}
|
|
|
|
protected override void OnStartupNextInstance(StartupNextInstanceEventArgs eventArgs)
|
|
{
|
|
// Subsequent launches
|
|
base.OnStartupNextInstance(eventArgs);
|
|
app.Activate();
|
|
}
|
|
}
|
|
|
|
public class SingleInstanceApplication : Application
|
|
{
|
|
|
|
protected override void OnStartup(System.Windows.StartupEventArgs e)
|
|
{
|
|
base.OnStartup(e);
|
|
|
|
// Create and show the application's main window
|
|
MainWindow window = new MainWindow();
|
|
window.Show();
|
|
}
|
|
|
|
public void Activate()
|
|
{
|
|
// Reactivate application's main window
|
|
this.MainWindow.Activate();
|
|
}
|
|
}
|
|
}
|