簡體   English   中英

如何顯示C#窗口服務的系統托盤圖標。

[英]How can I display a system tray icon for C# window service.?

如何顯示C#窗口服務的系統托盤圖標。

服務在與登錄用戶不同的窗口站中運行,因此您不能為它們提供系統任務欄圖標。 https://docs.microsoft.com/zh-cn/dotnet/framework/windows-services/introduction-to-windows-service-applications

Windows Service應用程序在與登錄用戶的交互式工作站不同的窗口工作站中運行。 窗口站是一個安全對象,其中包含剪貼板,一組全局原子和一組桌面對象。 因為Windows服務的站不是交互式站,所以將看不到Windows服務應用程序中引發的對話框,並且可能導致程序停止響應。 同樣,錯誤消息應該記錄在Windows事件日志中,而不是在用戶界面中引發。

.NET Framework支持的Windows服務類不支持與交互式工作站(即登錄的用戶)進行交互。 .NET Framework還不包括代表工作站和桌面的類。 如果Windows服務必須與其他工作站進行交互,則需要訪問非托管Windows API。 有關更多信息,請參見Windows SDK文檔。

Windows服務與用戶或其他工作站的交互必須經過精心設計,以包括諸如沒有登錄用戶或用戶具有一組意外的桌面對象之類的方案。 在某些情況下,編寫在用戶控制下運行的Windows應用程序可能更合適。

這里有幾個有關如何寫入系統托盤的鏈接。 您將需要另一個應用程序來與該服務交互,因為該服務不能直接在系統任務欄中顯示圖標。

如何制作僅在系統托盤中運行的.NET Windows窗體應用程序?

http://msdotnetsupport.blogspot.com/2008/02/cnet-application-windows-system-tray.html

您不能直接這樣做,因為Windows服務一定會在計算機運行時啟動,而不是在用戶登錄時啟動。該服務還將在不同的上下文中運行,可能以不同的用戶身份運行。

可以做的是編寫一個與服務交互的基於單獨系統托盤的“控制器”。

暫無
暫無

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

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