Z
zlyanyan
Unregistered / Unconfirmed
GUEST, unregistred user!
我想我的程序运行后在系统托盘处显示,要求无论实双击托盘弹出程序还实最小化程序,都可以在托盘处看到我的程序图标,我现在的代码只是在最小化的时候才会出现在托盘区,如果要在最大化程序时也在托盘区显示图标,该怎么做呀。<br>procedure TBoxForm.WMSysCommand(var Message:TMessage);<br>var<br> lpDataNotifyIconData;<br>begin<br> if (Message.WParam = SC_MINIMIZE ) then<br> begin<br> //如果用户最小化窗口则将窗口隐藏并在任务栏上添加图标<br> //定义托盘图标结构。<br> lpData := new(PNotifyIconDataA);<br> //lpData变量字节数。<br> lpData.cbSize := 88;<br> //SizeOf(PNotifyIconDataA);<br> lpData.Wnd := self.Handle;<br> //要加入的图标句柄,可任意指定,此处为在Tform中Icon属性中指定的图标。<br> lpData.hIcon := Application.Icon.Handle;<br> //回调函数消息 。<br> lpData.uCallbackMessage := WM_BARICON;<br> //内部标识,可设为任意数。<br> lpData.uID :=0;<br> //托盘信息。<br> lpData.szTip := 'FWS版本升级程序';<br> //指明那些消息有效。<br> lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;<br> //将程序的窗口样式设为TOOL窗口,可避免在任务条上出现<br> SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);<br> //向托盘中添加图标。<br> Shell_NotifyIcon(NIM_ADD,lpData);<br> //释放。<br> dispose(lpData);<br> //设置隐藏。<br> ShowWindow(self.Handle, SW_HIDE);<br> Application.ShowMainForm := false;<br> end<br> else<br> begin<br> //如果是其它的SystemCommand消息则调用系统缺省处理函数处理之。<br> DefWindowProc(self.Handle,Message.Msg,Message.WParam,Message.LParam);<br> end;<br>end;