任务栏(taskbar)是微软公司在windows 95中引入的一种特殊的桌面工具条,它为用户快速访问计算机资源提供了极大的方便,而状态栏(以下称通知栏)无疑是任务栏上较为特殊的一个窗口.编程人员可以调用api函数shell_notifyicon向通知栏发送消息来添加.删除或修改图标,当在图标上发生鼠标或键盘事件时,系统会向应用程序发送编程时预先定义的消息,通知栏处理回调函数就会被自动调用以做出相应的处理.实现上述功能的相关文章俯仰即拾,此处不再赘述.本文将讨论两个较为深入的问题及其在delphi中的实现方法.
2.将自动恢复功能封装在控件中以便其它程序中调用. 【程序编程相关:Linux 文件命令精通指南(上)】 1.windows发生错误导致外壳explorer.exe重启时通知栏图标的自动恢复 【推荐阅读:修改Platform Builder帮助】【扩展信息:最佳的75个安全工具】
关键词:通知栏.窗口过程
1 外壳explorer重启时通知栏图标的自动恢复相信很多windows用户都碰到过这种情况:运行某个程序时出现意外错误,导致外壳程序explorer.exe崩溃而发生重启(即explorer.exe被关闭后重新运行),任务栏也在消失后重新生成,但应用程序在通知栏添加的图标消失了,虽然这些程序仍在运行,但再也无法通过通知栏图标与用户交互.为避免这种情况出现,windows提供了相应的机制.在安装了internet explorer 4.0及以上版本的windows操作系统中,当任务栏建立后,外壳会向所有顶层的应用程序发出通知消息,该消息是外壳以字符串"taskbarcreated"为参数向系统注册获得的,应用程序窗口接收到该消息后就应该重新添加的通知栏图标.在delphi中实现过程如下: 1). 定义一个整型变量msgtaskbarrestart,用以保存任务栏重建的消息.2). 在主程序的initialization部分或者是在oncreate事件中以"taskbarcreated"为参数向系统注册消息(也即是询问"taskbarcreated"是哪条消息,因为以相同的参数注册会得到相同的消息,而"taskbarcreated"在windows启动的时候就已经被外壳注册).initialization
msgtaskbarrestart := registerwindowmessage(´taskbarcreated´);3). 重载主窗口的消息处理过程,拦截任务栏重建消息,进行重新添加图标的操作.
... 下一页