私たちのアプリケーションには次の要件があります。アプリケーションが実行中で、アプリケーションを再起動する場合、新しいインスタンスを開く代わりに、最初のインスタンスをアクティブにする必要があります。
これを実現するために、メイン ルーチンで実行中のインスタンスが既に存在するかどうかを確認します。はいの場合、次のコマンドを使用して最初のインスタンスを前面に出します。
Microsoft.VisualBasic.Interaction.AppActivate(appIdentifier);
これまでのところ、すべてが期待どおりに機能しています。このソリューションの唯一の問題は、最初のインスタンスが最小化されている場合、アプリケーションを再起動すると、最初のインスタンスがアクティブになりますが、表示されない (まだ最小化されている) ことです。
これが私の質問です。インスタンスをアクティブ化して、最後の WindowState に戻るにはどうすればよいですか。私の解決策は、 Form.Activated イベントを購読し、 eventhandler メソッドで次のコードを実行することでした:
if (MyForm.WindowState == FormWindowState.Minimized)
{
MyForm.WindowState = FormWindowState.Normal;
}
しかし、このソリューションでは、アプリケーションを最小化する前にアプリケーションが最大化された状態にあった場合、アプリケーションをアクティブ化した後にアプリケーションに戻らないという問題があります。
どうすればこれを解決できるか考えている人はいますか? 最後のwindowStateを取得する機会はありますか?
よろしくお願いします。