Delphi防止因系统崩溃而丢失任务栏的图标(重建托盘图标)


本文整理自网络,侵删。

 很多软件都在系统托盘区添加了图标,可以有时当Explorer.exe莫名的崩溃以后,程序在任务栏的图标就消失了,
对于有些在任务栏隐藏了的软件来说,就没法控制了。原因是Explorer重新载入以后会重建任务栏,
但大多数软件并不知道任务栏已经重建,所以没有及时重新画自己在任务栏的图标。
当任务栏建立的时候会向系统内所有顶级窗口发出一条消息:WM_TASKBARCreateD,我们只需要捕捉这个消息,
并重建任务栏图标即可。不过这是一条任务栏自定义的消息,所以需要用RegisterWindowMessage在自己的程序里注册该消息。

unit Unit1; interface uses  Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,  Dialogs; type  TForm1 = class(TForm)    procedure FormCreate(Sender: TObject);  private    procedure WndProc(var msg: Tmessage); override; //任务栏恢复消息(继承)  public    { Public declarations }  end; var  Form1: TForm1;  TaskBarMSG: Dword; //任务栏恢复消息 implementation {$R *.dfm} { TForm1 } procedure TForm1.WndProc(var msg: Tmessage); //任务栏恢复消息begin  if msg.msg = TaskBarMSG then SetTryico(Handle, Icon.Handle, AppTray); //重设ICON  inherited WndProc(msg);end;end; procedure TForm1.FormCreate(Sender: TObject);begin  TaskBarMSG := RegisterWindowMessage('HTaskBarCreated'); //注册任务栏恢复消息end; end.

编译这个程序,然后用任务管理器或其他工具中止Explorer.exe,可以看到在Explorer重新载入的时候,
本程序在任务栏的图标又重现了。

相关阅读 >>

Delphi 结束360safe和360保险箱进程

Delphi向当前窗口模拟键盘ctrl+v发送"粘贴"

Delphi得到系统目录的几个方法

Delphi二值图像膨胀算法

Delphi idhttp post 提交 json

Delphi多线程文件搜索

Delphi 几个dataset数据导出到xml word excel txt html的函数

Delphi写的一个屏幕截取函数

Delphi concat 字符串函数

Delphi程序版本信息设置说明

更多相关阅读请进入《Delphi》频道 >>



打赏

取消

感谢您的支持,我会继续努力的!

扫码支持
扫码打赏,您说多少就多少

打开支付宝扫一扫,即可进行扫码打赏哦

分享从这里开始,精彩与您同在

评论

管理员已关闭评论功能...