社区
C#
帖子详情
结束进程时 如何使托盘图标消失?
anya
2009-01-04 12:31:17
在测试中我在任务管理器里结束了这个进程 a.exe
但这个进程的托盘图标却不能随着进程的结束而自动消失
必须将鼠标移到图标上面时才能消失?
请问如何才能做到图标随着进程的结束而自动消失呢(外部强行结束,如在任务管理器将其结束)
最好有代码示例,谢谢.
...全文
1680
25
打赏
收藏
结束进程时 如何使托盘图标消失?
在测试中我在任务管理器里结束了这个进程 a.exe 但这个进程的托盘图标却不能随着进程的结束而自动消失 必须将鼠标移到图标上面时才能消失? 请问如何才能做到图标随着进程的结束而自动消失呢(外部强行结束,如在任务管理器将其结束) 最好有代码示例,谢谢.
复制链接
扫一扫
分享
举报
写回复
配置赞助广告
用AI写文章
25 条
回复
切换为时间正序
请发表友善的回复…
发表回复
打赏红包
a2b0c6
2012-07-17
打赏
举报
回复
还是觉得dispose()比较科学一点。
simpleloving
2012-06-29
打赏
举报
回复
退出时 直接把QSystemTrayIcon::hide()貌似可行!
SunYu88
2011-03-28
打赏
举报
回复
试试看在进程关闭前加上
notifyIcon1.Visible = false;
lynmsdn
2011-01-19
打赏
举报
回复
还真的挺管用的哦,
寒江易雪_王孙
2011-01-19
打赏
举报
回复
public void DisposeNotify()
{
if (this._tray != null)
_tray.Dispose();
}
主界面Form_Closing时,将Notify.Dispose();掉就OK了啊,关键看这个Notify怎么访问
dngsdhy
2011-01-19
打赏
举报
回复
呵呵,这个问题刚开始也困拢了我半天,上网找了很多贴子都没有解决的方法,后来我自己试了一个它的方法,结果一测试完全好用:在程序的closed事件处理程序中调用NotifyIcon控件的Dispose()方法,这样程序退出后托盘上的图标立刻就消失了。
private void Window_Closed(object sender, EventArgs e)
{
myNotifyIcon.Dispose();
}
tsorgy
2009-01-05
打赏
举报
回复
应用程序操作托盘图标是通过windows的委托来处理的,也就是应用程序对系统说“我要添加一个图标”,于是任务栏就多了个图标,程序退出时对系统说“把我的图标删除了”,任务栏才会消除图标。。。
直接砍掉一个进程,那个程序异常退出,还未来得及说“把我的图标删除了”,所以任务栏图标不会立刻消失。。
king520520
2009-01-05
打赏
举报
回复
这是因为window UI 没能即时更新过来,所以不行;
如果想解决这个问题,那要从window入手,而不是本进程的问题;
就像刚才楼上说的那样,window没做好,其实也不是没做好,
只是window的特性而已.操作系统不同,可能会有不同
CsToD
2009-01-05
打赏
举报
回复
任务管理器是强制结束进程的,而不会给进程发送任何消息,所以进程并不知道自己被结束了,从而无法清除图标。
解决方法也不是没有,只不过麻烦一点:
挂钩API。
任务管理器的“结束进程”是通过调用TerminateProcess这个API实现的,所以你可以挂钩对这个API的调用,这样你就知道什么时候被任务管理器结束了,当然可以清除图标。
任务管理器的“结束任务”我不清楚是怎么实现的,但肯定不是调用TerminateProcess,你可以去查一查,然后挂钩相应的API。
CruelYoung123
2009-01-05
打赏
举报
回复
我看到有一个VC程序可以刷新关闭无效的托盘程序图标。 C#不知道咋 弄。
zcfzcf001
2009-01-05
打赏
举报
回复
系统托盘就是这种机制,貌似微软的问题。
bingbingw
2009-01-05
打赏
举报
回复
是滴~~
bbbbbb888888
2009-01-04
打赏
举报
回复
windows的问题,解决不了吧。
Foxer
2009-01-04
打赏
举报
回复
程序是在任务管理器里强制结束的,程序根本控制不了这个图标,除非微软想办法,或者你自己去刷新那些图标,否则只能忍着了
hyblusea
2009-01-04
打赏
举报
回复
程序异常关闭,托盘图标是不会自动消失的...
hyblusea
2009-01-04
打赏
举报
回复
退出时让 托盘 控件不可见..再退出.
TempOneUser
2009-01-04
打赏
举报
回复
这是相当的正常啊·····慢慢适应它吧······
xxyping
2009-01-04
打赏
举报
回复
正常吧,还是微软的系统没做好。如果做的好的话你就不会看的见了。也很期待哪位大虾给个答案!
journeydj
2009-01-04
打赏
举报
回复
习惯吧,至少我没看到哪个程序能自动消失。就是visual studio也不行。
pw2580
2009-01-04
打赏
举报
回复
也遇到过,不知有没有人解决过
加载更多回复(5)
C# 程序关闭
托盘
图标
不会自动
消失
c#程序关闭
托盘
图标
不会自动
消失
,
进程
的
托盘
图标
却不能随着
进程
的
结束
而自动
消失
必须将鼠标移到
图标
上面
时
才能
消失
?请问如何才能做到
图标
随着
进程
的
结束
而自动
消失
呢(外部强行
结束
,如在任务管理器将其
结束
),windows系统好多程序都会这样。 网上搜索后大家说法不一,如下: 1、这个就这样,很多程序都有这个问题,大家都习惯了 2、似乎没法解决。。任务管理器是强制关闭的,程序认为是异常
结束
...
许多国产软件共存的bug!
许多国产软件共存的bug! 为了说明这个问题,我测试了下面的软件,我的机器是p3-450,192mb,win2000:天网防火墙2.4.8,腾讯QQ简体标准版2000C Build 0305b 简体测试版QQ2000C Build 0510 金山公司的金山词霸2002,foxmail 4.1 当上述程序运行后,它们会在屏幕的右下脚的
托盘
中增加一个小
图标
,当我们打开
进程
管理器
时
,把系
VC/MFC
结束
程序
进程
时
删除程序系统
托盘
中的
图标
丁丁:为什么我在自己写的程序里把某其他应用程序的
进程
TerminateProcess()了,这个被Over掉的程序在系统
托盘
中的
图标
木有
消失
捏。更奇怪的是,鼠标往系统
托盘
上一划,头屑不见了(广告词,
图标
不见了)。 俺:这。。。这俺也不知道,据说是盖茨兄让他小弟这么设计来气死中国程序员的。 丁丁:怎么这样啊,那我该怎么办呢? 俺:每次TerminateProcess()后,你
C#
111,128
社区成员
642,535
社区内容
发帖
与我相关
我的任务
C#
.NET技术 C#
复制链接
扫一扫
分享
社区描述
.NET技术 C#
社区管理员
加入社区
获取链接或二维码
近7日
近30日
至今
加载中
查看更多榜单
社区公告
让您成为最强悍的C#开发者
试试用AI创作助手写篇文章吧
+ 用AI写文章