delphi防止因系统崩溃而丢失任务栏的图标(重建托盘图标)  
官方Delphi 学习QQ群: 682628230(三千人)\n
频道

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重新载入的时候,
本程序在任务栏的图标又重现了。


推荐分享
图文皆来源于网络,内容仅做公益性分享,版权归原作者所有,如有侵权请告知删除!
 

Copyright © 2014 DelphiW.com 开发 源码 文档 技巧 All Rights Reserved
晋ICP备14006235号-8 晋公网安备 14108102000087号

执行时间: 0.048902988433838 seconds