我寫了一個小WPF應用程序,當'關閉'最小化到系統托盤(客戶需求)。雙擊會彈出備份,或者右鍵單擊可以退出上下文菜單。最大化系統托盤中的應用程序?
但是,如果應用程序最小化,並且用戶導航到開始 - >所有程序 - >應用程序,它將啓動一個新的實例。
如果用戶這樣做而不是激發新實例,我需要做什麼才能讓應用程序最大化運行實例?
謝謝!
我寫了一個小WPF應用程序,當'關閉'最小化到系統托盤(客戶需求)。雙擊會彈出備份,或者右鍵單擊可以退出上下文菜單。最大化系統托盤中的應用程序?
但是,如果應用程序最小化,並且用戶導航到開始 - >所有程序 - >應用程序,它將啓動一個新的實例。
如果用戶這樣做而不是激發新實例,我需要做什麼才能讓應用程序最大化運行實例?
謝謝!
這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
完美,謝謝! – Nicros 2011-01-06 05:49:25
查找Mutex對象和抓住一個活動窗口。在我面前沒有代碼,但這是你需要採取的方向。 - 我撒謊,嘗試[這篇文章的.net應用程序的單個實例](http://www.ai.uga.edu/mc/SingleInstance.html) – 2011-01-06 04:46:57