托盘图标莫名其妙消失问题的解决办法

转自djimon的专栏

天网防火墙右下角图标消失及解决方法尝试:
有许多朋友发贴,天网防火墙在系统托盘处(右下角)的图标消失。本人作了些试验,发现在使用windows优化大师的系统医生时,会将破解版的天网防火墙启动加载认作无效。另一种消失的情况是隐蔵了不活动图标。解决方法请试一下,在关机前如果使用windows优化大师作系统清理的,点击天网防火墙图标,执行系统设置的向导,设置“开机时自动启动天网防火墙”。如果是隐藏了图标的,只要设为显示即可。还有一种是中了木马,阻制了天网防火墙的启动,可以用KVDOS.exe在DOS状态下杀毒试试。

 

今天遇到一个编程上的问题,程序需要用到托盘图标,但是图标有时会莫名其妙从托盘上消失,但在任务管理器中查看该进程却是存在的,因为程序没有加快捷键,所以该程序的窗口没有办法再唤出来,只有从任务管理器里杀死再重启。测试部认为这是一个非常大的bug,将等级定在五个星。下午在网上查了很久资料,看到csdn上有讲,这是因为explorer.exe的崩溃造成的,当explorer.exe崩溃后,它会再次重新启动,重新启动后,它会重绘桌面、开始菜单、任务栏。如果任务栏的托盘程序处理了操作系统发来的TaskbarCreated消息,自己重新绘制的话,托盘上的图标会再次出现。就像msn一样,但QQ却不会,如果explorer.exe崩溃了,QQ在托盘上是看不到的,但因为它有快捷键,所以还是能对它进行操作的。

 

上面是具体问题的描述,下面来说说解决的办法。我用的是vc++6.0编的程序,所以这里也只说vc的解决方法,首先要定义一个Windows系统消息,const UINT WM_ADDICON_TOTASKBAR = ::RegisterWindowMessage(_T("TaskbarCreated"));这个消息即是explorer.exe重绘任务栏时发给程序的消息。再将该消息加入宏映射表,ON_REGISTERED_MESSAGE(WM_ADDICON_TOTASKBAR, OnAddIconToTaskbar) 。需要注意的是,这里用的是REGISTERED_MESSAGE,如果这里写得不对,也是不行的。然后要定义消息处理的函数,这里的函数定义也需要注意要定义成类似afx_msg LRESULT OnAddIconToTaskbar(WPARAM wParam, LPARAM lParam),这里如果不写成LRESULT而写成void,编绎可能通不过。而且如果不加WAPARAM和LPARAM编绎也可能通不过。

 

最后需要说明的是,在这个OnAddIconToTaskbar函数里面,需要重新做一次往托盘添加图标的过程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值