2011-01-06 4 views
7

私はWPFアプリケーションを書いていましたが、「閉じた」とするとシステムトレイ(顧客要件)が最小になります。ダブルクリックするとポップアップし、右クリックすると終了するコンテキストメニューが表示されます。システムトレイでアプリケーションを最大化しますか?

しかし、アプリケーションが最小化され、ユーザーがスタート - >すべてのプログラム - >アプリケーションに移動すると、新しいインスタンスが開始されます。

ユーザーが新しいインスタンスを起動するのではなく、実行中のインスタンスを最大限に活用するには、(C#で)何をする必要がありますか?

ありがとうございます!ジョンスキートから

+2

を参照してください。ミューテックスオブジェクトをルックアップし、アクティブなウィンドウをつかんでください。私の目の前にコードはありませんが、それはあなたが取る必要がある方向です。 - 私はうそをついた。[ネットアプリケーションの一例についてのこの記事](http://www.ai.uga.edu/mc/SingleInstance.html) –

答えて

7

これanswerはそれを

ミューテックスを移動するための方法で操作を行うために、ミューテックスを使用して説明します。それは など

しかし、プロセス名を使用してより多くの 壊れにくくだ、あなたは確か ミューテックスは、ごみが収集されないようにする必要があります。 (完了するまで実行されます「メイン」 メソッドを持つのではなく、イベントドリブン ある)サービスの 場合は、これを行うの 最も賢明な方法は、静的 変数にそれを置くために、おそらく です。

サービス が停止したときにミューテックスを破棄するので、 ファイナライゼーションなどを待つ必要はありません。

マシューブリンドレイは、あなたがそれを最大化するために、メッセージを送信する必要があります、他のアプリケーションを最大化するためにhis answer

[STAThread] 
static void Main() 
{ 
    using(Mutex mutex = new Mutex(false, "Global\\" + appGuid)) 
    { 
     if(!mutex.WaitOne(0, false)) 
     { 
     MessageBox.Show("Instance already running"); 
     return; 
     } 

     Application.Run(new Form1()); 
    } 
} 

のために同じ質問に、この例を示します。 message sending

+0

完璧、ありがとう! – Nicros

+0

私のパーフェクトを引っ込めなければならない!これは実行中のインスタンスをチェックし、新しいインスタンスを開始しませんが、新しいインスタンスを開始せずにこのシステムトレイのアプリケーションを最大化する方法についての質問には答えません。 – Nicros

+0

Pfft。私の撤回を撤回させてください - メッセージの下部にあるリンクを逃してください...それをチェックします。 – Nicros

関連する問題