1

私はVisual Studio 2012、Windowsフォームを使用しています。デスクトップのショートカットをクリックしたときに、システム トレイからアプリケーションを復元する必要があります。

同じアプリケーションの二重インスタンスを防止するこのコードを使用していますが、システム トレイからアプリケーションを開かないようにしています。

[STAThread]
    static void Main()
    {
        string mutex_id = "my application";
        using (Mutex mutex = new Mutex(false, mutex_id))
        {
            if (!mutex.WaitOne(0, false))
            {
                Form1 fForm;
                fForm = new Form1();
                fForm.Show();
                fForm.WindowState = FormWindowState.Normal;
                fForm.ShowInTaskbar = true;
                // MessageBox.Show("Instance Already Running!", "Error", MessageBoxButtons.OK, MessageBoxIcon.Hand);
                return;
            }

            Application.EnableVisualStyles();
            Application.SetCompatibleTextRenderingDefault(false);
            Application.Run(new Form1());
        }
    }

ここでいくつかの質問をスタックオーバーフローで読みましたが、運が悪かったです。このコードで何を変更する必要がありますか? 前もって感謝します!

4

2 に答える 2

2

これを実現するためにMutexを使用できます。これがCodePlexのボルトオンソリューションで、プログラムに非常に簡単に組み込むことができますこのソリューションは、次の機能を提供します。

  • ファーストインスタンスがシステムトレイ(別名「通知領域」)に最小化されている場合は、復元します
  • ファーストインスタンスのアクティブ化
  • 2番目のインスタンスが開かないようにする
于 2013-02-03T23:45:03.153 に答える
0

すでに実行されているアプリのインスタンスを取得するためのさまざまなアイデアで、この質問と回答を確認してください。そして、このリンクを確認してください-http://msdn.microsoft.com/en-us/magazine/cc163741.aspx(mutexを見てください)。

于 2013-02-03T23:42:58.107 に答える