名前付きミューテックスを使用して、アプリケーションが既に実行されていることを検出できます。または、GUI アプリを使用している場合は、VisualBasic の SingleInstance アプリケーションからフォームを継承できます。
public class SingleInstanceController
: WindowsFormsApplicationBase
{
public SingleInstanceController()
{
// Set whether the application is single instance
this.IsSingleInstance = true;
this.StartupNextInstance += new
StartupNextInstanceEventHandler(this_StartupNextInstance);
}
void this_StartupNextInstance(object sender, StartupNextInstanceEventArgs e)
{
// Here you get the control when any other instance is
// invoked apart from the first one.
// You have args here in e.CommandLine.
// You custom code which should be run on other instances
}
protected override void OnCreateMainForm()
{
// Instantiate your main application form
this.MainForm = new Form1();
}
}
[STAThread]
static void Main(string[] args)
{
SingleInstanceController controller = new SingleInstanceController();
controller.Run(args);
}
このクラスは .Net フレームワークの一部として、またすべての言語で使用できるため、C# でコードを記述しても問題ありません。
そして、これがWPFのラッパーです