托盘图标异常消失问题的分析与解决
来源:互联网 发布:南京软件企业 编辑:程序博客网 时间:2024/06/05 18:13
经测试发现,对于使用托盘图标的程序,托盘图标有时会出现如下的异常:
(1)当资源管理器explorer.exe异常重启后,程序在任务栏的托盘图标会消失;
(2)在个别机器上出现托盘图标因不明原因消失,而此时程序依然在运行(任务管理器中能找到对应的进程)。
针对第一种情况,在explorer.exe异常重启时,会产生一个叫做TaskbarCreated的消息,可以在响应该消息时,将托盘图标加到托盘图标区域,以规避此种情况中出现的问题。相关代码如下所示:
UINT m_uMsgTaskbarRestart; ......m_uMsgTaskbarRestart = RegisterWindowMessage(_T("TaskbarCreated")); \\ 注册这个消息,记录消息ID ......LRESULT CXXDlg::DefWindowProc(UINT message, WPARAM wParam, LPARAM lParam){if ( message == m_uMsgTaskbarRestart ){Shell_NotifyIcon( NIM_ADD, &m_nid);}return CDialog::DefWindowProc( message, wParam, lParam );}对于第二种情况,具体的原因不明,也可以找到一种办法来规避掉:开启一个守护托盘图标的定时器,定时检测托盘图标是否存在,不存在则添加,相关代码如下:(只给出定时器消息响应函数的代码段)
void CXXDlg::OnTimer( UINT_PTR nIDEvent ){if ( nIDEvent == 100 ){if ( !Shell_NotifyIcon( NIM_MODIFY, &m_nid ) )Shell_NotifyIcon( NIM_ADD, &m_nid );}CDialog::OnTimer(nIDEvent);}
- 托盘图标异常消失问题的分析与解决
- 托盘图标莫名其妙消失问题的解决办法
- 托盘图标莫名其妙消失问题的解决办法
- [MFC]托盘图标删除后不自动消失的问题
- 解决 Ubuntu NetworkManager 图标消失的问题
- 解决资源管理器重启后,托盘图标丢失的问题
- 解决网易云托盘图标左置的问题!
- 托盘图标菜单弹出后,点击其它地方,菜单不消失的问题
- 关于如何处理资源管理器崩溃后托盘图标消失的问题
- QT程序退出后托盘图标不消失问题
- QT程序退出后托盘图标不消失问题
- 解决wine托盘图标覆盖问题
- 托盘图标在explorer.exe进程退出重启后图标消失(应用程序进程依然存在)的问题
- 解决Java程序的托盘图标在Windows任务栏重建后丢失的问题(使用SystemTray类创建托盘图标)
- 音量图标消失的解决
- Windows关闭程序托盘图标不能消失的原因
- Ubuntu12.04iBus托盘图标消失的解决方案
- 重启资源管理器导致托盘图标消失的解决方法
- Sql判断对象是否存在
- handler知识汇总
- SMTP协议分析
- js 对话框 跳转页面
- 一步步优化JVM五:优化延迟或者响应时间(3)
- 托盘图标异常消失问题的分析与解决
- Effective C++之让自己习惯C++
- UITableView学习笔记
- 指针常量与常量指针
- LINK : fatal error LNK1104: cannot open file''**.lib'' 和 error LNK2001:
- gstreamer开发
- js 省市联动
- bridge 桥接模式 和 strategy模式的区别
- Win7 硬盘分区建议