簡體   English   中英

單擊桌面上的快捷方式時,打開系統任務欄圖標

[英]Open system tray icon when click on shortcut on desktop

我正在使用WinForms。 現在,我要實現一件事:當我單擊桌面應用程序的快捷方式,然后該應用程序處於最小化狀態時,它將從系統托盤中打開(而不創建新實例)。

好的,所以當您雙擊快捷方式時,實際上將打開該應用程序的另一個實例,該實例不知道已最小化到托盤中的那個實例。

本質上,您想檢測到啟動時正在運行應用程序的另一個實例。 如果是這樣,則告訴您應用程序的現有實例向用戶顯示其UI,然后退出。

您的解決方案包括兩件事:

  1. 您的應用能夠了解它的另一個實例已經在運行的能力。
  2. 您的應用能夠與其他實例“對話”(進程間通信)並告訴他們該怎么做。

1.您的應用能夠了解它的另一個實例已經在運行的能力。
在.NET中,這很簡單。 當您打開應用程序時,請使用Mutex類。 這是系統范圍的鎖,在本質上與Monitor相似。

例:

// At app startup:
bool createdNew;
var mutex = new Mutex(true, Application.ProductName, out createdNew);
if (!createdNew)
{
    // Use IPC to tell the other instance of the app to show it's UI
    // Return a value that signals for the app to quit
}

// At app shutdown (unless closing because we're not the first instance):
mutex.ReleaseMutex();

2.進程間通訊
.NET中有幾種執行IPC的方法。 WCF是其中之一,盡管很重。 命名管道可能是最適合您的選擇,盡管基本套接字消息傳遞也必須如此簡單。

這是有關.NET中適當的IPC方法的問題的鏈接,以幫助您: .NET進程間通信的最佳選擇是什么?

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM