如何显示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. 在托盘窗口中隐藏图标