Lal*_*lit 11 windows-xp windows-services c#-2.0
我的应用程序有一个窗口服务.当我通过使用任务管理器终止进程来停止时,托盘图标不会消失.它是一个窗口错误或其他什么?我们有解决方案吗?提前致谢 :).
您可以通过调用指定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)
将鼠标移到图标上,它就会消失.我在所有版本的Windows中都注意到了这种行为,包括Win 7.
这个问题没有解决办法.如果您使用任务管理器终止进程,则它不会收到终止通知,因此无法从托盘中删除其图标.尝试以这种方式避免杀戮过程 您可以net start/stop用来杀死服务或services.mscGUI.
使用这个工具http://www.codeproject.com/Articles/19620/LP-TrayIconBuster
它遍历 TrayNotifyWnd 和 NotifyIconOverflowWindow 中的 ToolBarButtons 并删除那些具有空文件名的按钮。