杀戮过程中托盘图标不会消失

Lal*_*lit 11 windows-xp windows-services c#-2.0

我的应用程序有一个窗口服务.当我通过使用任务管理器终止进程来停止时,托盘图标不会消失.它是一个窗口错误或其他什么?我们有解决方案吗?提前致谢 :).

Wil*_*sem 8

您可以通过调用指定NotifyIcon对象的Dispose()方法让图标消失.在大多数情况下,这些Container-object不是应用程序中组件树的一部分,因此它不会通过终止进程而消失.当用户移动图标时,图标不会找到它的父级,因此它会消失.但是通过调用Dispose方法,它至少在我的应用程序中消失了.所以:

//creating a NotifyIcon
NotifyIcon notifyicon = new NotifyIcon();
notifyicon.Text = "Text"; 
notifyicon.Visible = true; 
notifyicon.Icon = new Icon(GetType(),"Icon.ico");
//let it disappear
notifyicon.Dispose();
Run Code Online (Sandbox Code Playgroud)


JL.*_*JL. 6

将鼠标移到图标上,它就会消失.我在所有版本的Windows中都注意到了这种行为,包括Win 7.

  • 这不完全是一个修复.更像是一个肮脏的污秽黑客. (2认同)
  • 投反对票是因为没有答案,也没有暗示为什么没有答案......为什么它经常被投票? (2认同)

ale*_*rus 5

这个问题没有解决办法.如果您使用任务管理器终止进程,则它不会收到终止通知,因此无法从托盘中删除其图标.尝试以这种方式避免杀戮过程 您可以net start/stop用来杀死服务或services.mscGUI.


mmb*_*ian 5

使用这个工具http://www.codeproject.com/Articles/19620/LP-TrayIconBuster

它遍历 TrayNotifyWnd 和 NotifyIconOverflowWindow 中的 ToolBarButtons 并删除那些具有空文件名的按钮。