如何顯示C#窗口服務的系統托盤圖標?如何顯示C#窗口服務的系統托盤圖標?
回答
服務運行在與登錄用戶不同的窗口站中,因此您無法爲它們設置系統托盤圖標。從https://docs.microsoft.com/en-us/dotnet/framework/windows-services/introduction-to-windows-service-applications:
Windows服務應用程序在與登錄用戶的交互式站點不同的窗口站中運行。窗口站是一個安全的對象,它包含一個剪貼板,一組全局原子和一組桌面對象。由於Windows服務站不是交互式工作站,因此從Windows服務應用程序中引發的對話框將不會顯示,並且可能導致程序停止響應。同樣,錯誤消息應記錄在Windows事件日誌中,而不是在用戶界面中引發。
.NET Framework支持的Windows服務類不支持與交互式工作站(即登錄用戶)的交互。 .NET Framework也不包含代表工作站和桌面的類。如果您的Windows服務必須與其他工作站進行交互,則需要訪問不受管理的Windows API。有關更多信息,請參閱Windows SDK文檔。
Windows服務與用戶或其他工作站的交互必須經過精心設計,以便包括諸如沒有登錄用戶或用戶擁有一組意外的桌面對象等情況。在某些情況下,編寫在用戶控制下運行的Windows應用程序可能更合適。
下面是一些關於如何寫入系統托盤的鏈接。您需要另一個應用程序與服務進行交互,因爲該服務不能在系統托盤中直接顯示圖標。
How can I make a .NET Windows Forms application that only runs in the System Tray?
和
http://msdotnetsupport.blogspot.com/2008/02/cnet-application-windows-system-tray.html
您不能直接訪問,因爲Windows服務必須在機器啓動時啓動,而不是在用戶登錄時啓動。該服務也將在不同的環境中運行,可能與其他用戶不同。
你可以做的是寫一個單獨的系統托盤基於「控制器」,與服務交互。
- 1. 我想在系統托盤上顯示數字通知窗口上的圖標
- 2. C++中的系統托盤圖標
- 3. 在系統托盤中顯示標籤
- 4. 系統托盤圖標
- 5. 系統托盤圖標
- 6. wxPython系統托盤圖標
- 7. 打開應用程序主窗口在系統托盤圖標
- 8. 最小化窗口到系統托盤
- 9. 如何取消任務欄按鈕和顯示系統托盤圖標
- 10. 在Windows服務器中的系統托盤圖標的問題
- 11. 如何時,不存在「主」主窗口中創建WPF系統托盤圖標
- 12. Java服務包裝系統托盤圖標問題
- 13. SWT系統托盤 - Linux的GTK侏儒托盤圖標上盤
- 14. 強制Windows顯示系統托盤圖標
- 15. 更改系統托盤圖標圖像
- 16. 扭曲的系統托盤圖標
- 17. 沒有圖標的Java系統托盤
- 18. 哪個Windows進程顯示給定的任務欄系統托盤圖標?
- 19. qt5.5不顯示系統托盤
- 20. 系統托盤displayMessage()沒有顯示
- 21. 如何使用win32 API顯示系統托盤圖標中的文本?
- 22. 在C++中如何使用Win32 API來最小化系統托盤的窗口?
- 23. C#系統托盤上下文菜單顯示在圖標下方
- 24. Qt多個系統托盤圖標
- 25. 消失系統托盤圖標
- 26. 單擊系統托盤圖標Python Win32
- 27. 更改系統托盤圖標顏色
- 28. 圖標存在於系統托盤中?
- 29. vb6系統托盤 - 打開任何其他頂部的窗口
- 30. 在托盤窗口中隱藏圖標