//自己定义一个消息:
  const
  WM_BARICON=WM_USER+200;
//得到这个消息
    procedure WMBarIcon(var Message:TMessage);message WM_BARICON;//当最小化是将窗口化为图标
procedure  TForm1.WMSysCommand (var Message:TMessage);
var
lpData:PNotifyIconData;
begin
if Message.WParam = SC_ICON then
        begin
                lpData := new(PNotifyIconDataA);
                lpData.cbSize := 88;
                lpData.Wnd := Form1.Handle;
                lpData.hIcon := image2.Picture.Icon.Handle ;
                lpData.uCallbackMessage := WM_BARICON;
                lpData.uID :=0;
                lpData.szTip := '欢迎使用本软件!';
                lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
                Shell_NotifyIcon(NIM_ADD,lpData);
                dispose(lpData);
                Form1.Visible := False;
        end
        else
        begin
//如果是其它的SystemCommand 消息则调用系统缺省处理函数处理之。
                DefWindowProc(Form1.Handle,Message.Msg,Message.WParam,Message.LParam);
        end;
end;//当要显示主窗口时消除任务的小图标
procedure TForm1.N1Click(Sender: TObject);
var
    lpData:PNotifyIconData;
begin
lpData := new(PNotifyIconDataA);
lpData.cbSize := 88;
lpData.Wnd := Form1.Handle;
lpData.hIcon := image2.Picture.Icon.Handle ;
lpData.uCallbackMessage := WM_BARICON;
lpData.uID :=0;
lpData.szTip := '欢迎使用本软件!';
lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
Shell_NotifyIcon(NIM_DELETE,lpData);
dispose(lpData);
Form1.Visible := True;
end;
//如果用户点击任务栏图标则将图标删除并回复窗口。
procedure TForm1.WMBarIcon(var Message:TMessage);
var
    lpData:PNotifyIconData;
    p:tpoint;
begin
        if (Message.LParam = WM_LBUTTONDOWN) then
                begin
                        lpData := new(PNotifyIconDataA);
                        lpData.cbSize := 88;//SizeOf(PNotifyIconDataA);
                        lpData.Wnd := Form1.Handle;
                        lpData.hIcon := image2.Picture.Icon.Handle ;
                        lpData.uCallbackMessage := WM_BARICON;
                        lpData.uID :=0;
                        lpData.szTip := '欢迎使用本软件!';
                        lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
                        Shell_NotifyIcon(NIM_DELETE,lpData);
                        dispose(lpData);
                        Form1.Visible := True;
                end;
        //当单击鼠标右键时打开菜单
        if (message.lparam=WM_RBUTTONDOWN) then
                begin
                    getcursorpos(p);
                    popupmenu1.Popup (p.x,p.y);
        end;
end;