我想我的程序运行后在系统托盘处显示,要求无论实双击托盘弹出程序还实最小化程序,都可以在托盘处看到我的程序图标,我现在的代码只是在最小化的时候才会出现在托盘区,如果要在最大化程序时也在托盘区显示图标,该怎么做呀。
procedure TBoxForm.WMSysCommand(var Message:TMessage);
var
lpData:PNotifyIconData;
begin
if (Message.WParam = SC_MINIMIZE ) then
begin
//如果用户最小化窗口则将窗口隐藏并在任务栏上添加图标
//定义托盘图标结构。
lpData := new(PNotifyIconDataA);
//lpData变量字节数。
lpData.cbSize := 88;
//SizeOf(PNotifyIconDataA);
lpData.Wnd := self.Handle;
//要加入的图标句柄,可任意指定,此处为在Tform中Icon属性中指定的图标。
lpData.hIcon := Application.Icon.Handle;
//回调函数消息 。
lpData.uCallbackMessage := WM_BARICON;
//内部标识,可设为任意数。
lpData.uID :=0;
//托盘信息。
lpData.szTip := 'FWS版本升级程序';
//指明那些消息有效。
lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
//将程序的窗口样式设为TOOL窗口,可避免在任务条上出现
SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
//向托盘中添加图标。
Shell_NotifyIcon(NIM_ADD,lpData);
//释放。
dispose(lpData);
//设置隐藏。
ShowWindow(self.Handle, SW_HIDE);
Application.ShowMainForm := false;
end
else
begin
//如果是其它的SystemCommand消息则调用系统缺省处理函数处理之。
DefWindowProc(self.Handle,Message.Msg,Message.WParam,Message.LParam);
end;
end;
procedure TBoxForm.WMSysCommand(var Message:TMessage);
var
lpData:PNotifyIconData;
begin
if (Message.WParam = SC_MINIMIZE ) then
begin
//如果用户最小化窗口则将窗口隐藏并在任务栏上添加图标
//定义托盘图标结构。
lpData := new(PNotifyIconDataA);
//lpData变量字节数。
lpData.cbSize := 88;
//SizeOf(PNotifyIconDataA);
lpData.Wnd := self.Handle;
//要加入的图标句柄,可任意指定,此处为在Tform中Icon属性中指定的图标。
lpData.hIcon := Application.Icon.Handle;
//回调函数消息 。
lpData.uCallbackMessage := WM_BARICON;
//内部标识,可设为任意数。
lpData.uID :=0;
//托盘信息。
lpData.szTip := 'FWS版本升级程序';
//指明那些消息有效。
lpData.uFlags := NIF_ICON or NIF_MESSAGE or NIF_TIP;
//将程序的窗口样式设为TOOL窗口,可避免在任务条上出现
SetWindowLong(Application.Handle, GWL_EXSTYLE, WS_EX_TOOLWINDOW);
//向托盘中添加图标。
Shell_NotifyIcon(NIM_ADD,lpData);
//释放。
dispose(lpData);
//设置隐藏。
ShowWindow(self.Handle, SW_HIDE);
Application.ShowMainForm := false;
end
else
begin
//如果是其它的SystemCommand消息则调用系统缺省处理函数处理之。
DefWindowProc(self.Handle,Message.Msg,Message.WParam,Message.LParam);
end;
end;
tnd :TNotifyIconData;
在FormCreate事件中处理:
tnd.cbSize := sizeof(NOTIFYICONDATA);
tnd.Wnd := Handle;
tnd.uID := 1;
tnd.uFlags := NIF_MESSAGE or NIF_ICON or NIF_TIP;
tnd.uCallbackMessage := MOUSE_MESSAGE;
tnd.hIcon := LoadIcon(HInstance,'MAINICON');
tnd.szTip :='Ä£ÄâÆÁÓë¼à¿ØϵͳͨÐÅת»»³ÌÐò';
Shell_NotifyIcon(NIM_ADD,@tnd);在FormDestroy事件中处理: Shell_NotifyIcon(NIM_DELETE,@tnd);
http://www.cndelphi.com/bbs/dispbbs.asp?boardID=50&ID=150&skin=0
PopupMenu :=TPopupMenu.Create(self); PopupMenu.Items.Items[0].Name :='D1';
PopupMenu.Items.Items[0].Caption :='ni ho';
PopupMenu.Items.Items[0].GroupIndex :=1;