タイトル通り、インスタンスプログラムを一つ作り、別インスタンス起動時にMainWindowを表示したい。許可されるインスタンスは 1 つだけであるというメッセージを表示することができました。
public class MyApplication
{
static Mutex mutex = new Mutex(true, "FirstInstance");
[STAThread]
public static void Main(string[] args)
{
if (mutex.WaitOne(TimeSpan.Zero, true))
{
App app = new App();
app.InitializeComponent();
app.Run();
}
else
{
MessageBox.Show("only one instance at a time");
}
}
}
これはうまくいきますが、メッセージではなくMainWindowを表示したいので、試してみました
static Application app;//change app to static
if (mutex.WaitOne(TimeSpan.Zero, true))
{
app = new App();
app.InitializeComponent();
app.Run();
}
else
{
app.MainWindow.WindowState = WindowState.Normal;
}
「System.NullReferenceException: オブジェクト参照がオブジェクトのインスタンスに設定されていません」というメッセージが表示されます。アプリの MainWindow (静的) が null のようですが、理由はわかりません。
そこで、この記事を試してみましたhttp://sanity-free.org/143/csharp_dotnet_single_instance_application.html しかし、WndProc メソッドは WPF に存在しません。
助けていただければ幸いです。ありがとう!