如果应用程序以系统启动,则缺少托盘NotifyIcon

本文关键字:NotifyIcon 应用程序 系统启动 如果 | 更新日期: 2023-09-27 18:29:01

我有一个针对.NET framework 2.0的C#(VS 2012 Express),它使用NotifyIcon组件来创建托盘图标。

用户的「开始」菜单''「启动」文件夹中有一个应用程序的快捷方式,这会导致在大多数情况下,当窗口启动时,图标会出现在任务栏中。

然而,在某些情况下,可执行文件在系统启动时启动,但托盘中缺少图标。然而,我没有一套可靠的步骤来重现这个问题。

从阅读这篇文章来看,我似乎应该听取shell启动的事件并重新绘制托盘图标,但我不确定如何进行此操作,因为.NET正在为我管理低级别调用:http://msdn.microsoft.com/en-us/library/windows/desktop/cc144179(v=vs.85).aspx

任何建议都将不胜感激。谢谢

更新:只有当我将Windows设置为自动登录到默认用户帐户时,才会出现此问题。如果我手动注销然后再次登录,我的图标将正确显示。

更新:如果手动关闭并重新启动Explorer.exe,则图标将正确重新绘制。

如果应用程序以系统启动,则缺少托盘NotifyIcon

我通过在表单构造函数末尾(调用InitializeComponents之后)切换NotifyIcon组件的可见性(从false到true)解决了这个问题。