怎样把应用程序的图标添加到托盘里去呢
解决方案 »
- Delphi,请教一个TdxNavBar控件中添加TTreeView控件的问题
- 求教,在反弹,发送CMD命令,100分求,不知道问题出哪了.........
- 我的DBGridEh有一个"颜色"的属性字段,现在我要在这个字段数据显示的地方双击就会弹出一个颜色表。我应该在什么方法里面添加代码来弹出这
- 精确工资计算软件
- 可否直接用并口控制IC卡?
- 向Delphi5的TreeView添加节点的速度为什么比Delphi4慢很多?
- 回来了,就多放点分
- Delphi和vb有什么区别?
- 讨论: 关于进度条.......的问题?
- 一个FORM窗口,最小化时有事件触发吗
- 关于DBNavigator1,在线等!50分!
- Database Desktop的启动问题!100分!
{托盘图标常量}
Icon_ID=1; //图标标识
MI_ICONEVENT=WM_USER+$1000; //消息ID
{托盘图标处理}
NormalIcon:TIcon; //托盘图标
procedure InstallIcon; //安装托盘图标
procedure unInstallIcon; //卸载托盘图标
procedure IconOnClick(var message:TMessage);message MI_ICONEVENT; //托盘图标响应//--------安装托盘图标--------//
procedure TMainForm.InstallIcon;
var IconData:TNotifyIconData;
begin
NormalIcon:=TIcon.Create;
NormalIcon:=Self.Icon;
IconData.cbSize:=SizeOf(IconData);
IconData.Wnd:=Handle;
IconData.uID:=Icon_ID;
IconData.uFlags:=NIF_ICON or NIF_MESSAGE or NIF_TIP;
IconData.uCallBackMessage:=MI_ICONEVENT;
IconData.hIcon:=NormalIcon.Handle;
IconData.szTip:=';
Shell_NotifyIcon(NIM_ADD,@IconData);
end;//--------卸载托盘图标--------//
procedure TMainForm.unInstallIcon;
var IconData:TNotifyIconData;
begin
IconData.cbSize:=SizeOf(IconData);
IconData.Wnd:=Handle;
IconData.uID:=Icon_ID;
Shell_NotifyIcon(NIM_DELETE,@IconData);
end;
//--------处理托盘图标的事件--------//
procedure TMainForm.IconOnClick(var message:TMessage);
var p:TPoint;
begin
if message.LParam=WM_LBUTTONDOWN then //单击事件
begin
GetCursorPos(p);
PopupMenu2.popup(p.x,p.y);
end;
if message.LParam=WM_LBUTTONDBLCLK then //双击事件
ShowMainForm;
if message.LParam=WM_RBUTTONDOWN then //右击事件
begin
GetCursorPos(p);
PopupMenu1.popup(p.x,p.y);
end;
end;
向系统托盘中加入图标控制菜单须用到函数 Shell_NotifyIconA,而这个函数又有两个参数 :'TnotifyIconDataA' 结构的参数和一个消息参数即 :Shell_NotifyIconA(dwMessage:DWORD;lpData:PNotifyIconDataA),第一个参数 dwMessage 可以是以下值 :NIM_ADD: 增加一个图标 ;NIM_MODIFY: 修改一个已有的图标 ;NIM_DELETE: 删除一个已有的图标 ;
第二个参数的 TnotifyIconDataA 结构如下 :
TnotifyIconDataA=record
cbSize:DWORD; { 表示该结构的长度 }
Wnd:HWND; { 是调用 Shell_NotifyIconA 函数的窗口的句柄即 Handle}
iID:UINT; { 是在下面的 uCallbackMessage 参数指定的消息中使用的一个自定义数值 }
uFlags:UINT; { 决定该结构中的有效部分,如有 NIF_MESSAGE 则 uCallbackMessage 参数有 效 ; 若有 NIF_ICON 则 hIcon 有效 ; 有 NIF_TIP 则 szTip 参数有效,当然你可 以让这三个参数都有效只须要在这个参数中写成 NIF_MESSAGE+NIF_ICON+NIF_TIP 即可 }
uCallbackMessage:UNIT; { 当添加的图标上有鼠标事件如右击等等时系统向 Wnd 参数所指定的窗口发 送消息,这个消息的 Msg 参数是 uCallbackMessage,这个消息的 wParam 参数是 uID,这个消息的 lParam 参数是鼠标事件的 Msg 值 }
Icon:HICON; { 是出现在系统托盘中的图标的句柄即 handle}
szTip:array[0..63] of AnsiChar; { 即 delphi 是常用的 hint 即当鼠标停留在托盘图标上时的提示,例如你可用 ‘这是我的第一个托盘图标菜单’}
end;