2012-08-24 30 views
0

我在我的C#應用​​程序中創建了一個notifyIcon,我很滿意。基本上,我的應用程序是其他應用程序(記事本,火狐等)的包裝。所以現在,當我運行我的應用程序(「MyApp firefox.exe」)時,它會加載Firefox,當我將鼠標懸停在任務欄中的圖標上時,它會顯示「firefox.exe」...非常簡單。如何在應用程序的多個實例上擁有1個notifyIcon?

如果我運行我的應用程序的2個實例(使用不同的參數),我得到2個圖標,其中一個鼠標是'firefox.exe',另一個'notepad.exe'。

我真的很喜歡的是有1個圖標,我可以在其中創建一個ContextMenuStrip,將所有應用程序名稱添加爲MenuItems,所以當我右鍵單擊時,有2個可選項目。

有沒有辦法做到這一點,而沒有包裝我的應用程序在另一個應用程序包裝?有任何想法嗎?

+0

你得到這個工作你的解決方案是什麼?我的回答任何幫助?! – 0909EM

回答

1

很抱歉,如果這是一個可怕的答案...

創建以同樣的方式第一個應用程序啓動時,您只創建一個應用程序的單個實例互斥...

代替防止您的應用程序啓動設置標誌如下

Mutex firstAppToStart = new System.Threading.Mutex(false, "Mutex..."); 
if (firstAppToStart.WaitOne(0, false)) { 
    // set flag to allow notifyicon to be loaded 
    CreateNotificationIcon(); 
} else { 
    // The mutex is not ours, therefore we do not create a notify icon 
} 
// Subsequent messages will be posted to the first application to use 
// the notify icon on the first application 

現在使用Windows消息的應用程序之間張貼所以現在你有一個單一的NotifyIcon - 其他應用程序使用Windows消息發佈消息給它

這意味着當第一個應用程序去notifyicon也會去,但你可以解決這個問題,通過阻止第一個應用程序關閉,如果它是第一個應用程序,持有應用程序列表,然後張貼Windows消息時每個關閉,當他們都走了第一個應用程序可以關閉自己...

相關問題