procedure TForm1.WMMyTrayIconCallBack(var Msg: TMessage);
//处理点击托盘图标的事件,根据 WM_MOUSEMOVE 消息的不同情况产生不同的回应
var
CursorPos : TPoint;
begin
PopupMenu1.AutoPopup:=False;
case Msg.lParam of
//左键按下
WM_LBUTTONDOWN : begin
application.MainForm.BringToFront; //窗体置前
end;
//左键双击
WM_LBUTTONDBLCLK : begin //窗体隐含或显示
Application.MainForm.Visible := not Application.MainForm.Visible;
SetForegroundWindow(Application.Handle);
end;
//右键按下
WM_RBUTTONDOWN : begin //显示弹出菜单
GetCursorPos(CursorPos);
PopupMenu1.Popup(CursorPos.x,CursorPos.y);
end;
end//case
end;
procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
begin
Shell_NotifyIcon(NIM_DELETE, @MyTrayIcon);//删除托盘图标
end;
procedure TForm1.FormCreate(Sender: TObject);
begin
SetWindowLong(Application.Handle,GWL_EXSTYLE,WS_EX_TOOLWINDOW);//程序不在任务栏上显示
TrayShow(Application.MainForm);//显示图标
flag:=0;
end;
procedure TForm1.n_MainFromDispOrHideClick(Sender: TObject);
begin
if Application.MainForm.Visible then
begin
Application.MainForm.Hide;
end
else
begin
Application.MainForm.Show;
n_MainFromDispOrHide.Caption :='隐藏主窗体';
end;
end;
procedure TForm1.Timer1Timer(Sender: TObject);
var
ic:TICON;
begin
if flag=0 then flag:=1
else flag:=0;
ic:=TICON.Create;
ImageList1.GetIcon(flag,ic);
with MyTrayIcon do
begin
cbSize := SizeOf(tnotifyicondata);
uFlags := NIF_ICON or NIF_TIP or NIF_MESSAGE;
uID := 0; ///该是多少啊?
Wnd := Handle;
uCallbackMessage := WM_MYTRAYICONCALLBACK;
// hIcon :=Application.Icon.Handle ;]
hicon:=ic.Handle;
end;
var
info: TFlashWInfo;
begin
with info do begin
info.cbSize := SizeOf(info);
hwnd := Application.Handle;
dwFlags := FLASHW_TRAY + FLASHW_TIMERNOFG;
uCount := 0;
dwTimeout := 0;
end;
FlashWindowEx(info);
end;