好像是又这个控件的,但是其实它实现起来很简单,所以我一般都是直接写代码的
OnFormCreate:
var
  ShNI:PNotifyIconData;
begin
  ShNI:=New(PNotifyIconData);//New一个对象
  SHNI.cbSize:=SizeOf(NotifyIconData);
  SHNI.Wnd:=MainForm.Handle;//指定接受消息的窗口HANDLE
  SHNI.uID:=20000716;       //指定一个ID,随便其一个吧
  SHNI.uFlags:=NIF_ICON+NIF_MESSAGE+NIF_TIP;//指定它的属性(有图标+消息传递+提示)
  ShNI.uCallbackMessage:=WM_USER+1;//传递的消息ID,
  ShNI.hIcon:=Application.Icon.Handle;//指定显示的图标,可以通过TICON得到其他的
  ShNI.szTip:='Hiding...';//显示提示信息
  Shell_NotifyIcon(NIM_ADD,ShNI);//增加图标
end;

解决方案 »

  1.   

    OnFormDestory:
    var
      ShNI:PNotifyIconData;
    begin
      ShNI:=New(PNotifyIconData);//保证这里的写法和上面要一致,才能成功删除
      SHNI.cbSize:=SizeOf(NotifyIconData);
      SHNI.Wnd:=MainForm.Handle;
      SHNI.uID:=20000716;
      SHNI.uFlags:=NIF_ICON+NIF_MESSAGE +NIF_TIP;
      ShNI.uCallbackMessage:=WM_USER+1;
      ShNI.hIcon:=Application.Icon.Handle;
      ShNI.szTip:='Hiding...';
      Shell_NotifyIcon(NIM_DELETE,ShNI);
    end;
    以下是接受消息步骤:

      TMainForm = class(TForm)
      的说明中加入
      procedure NotifyIconMessage(var Message:TWMChar);Message WM_USER+1;在最后加入函数
    procedure TMainForm.NotifyIconMessage(var Message:TWMChar);
    begin
      if(Message.KeyData=WM_LBUTTONDBLCLK)then
      begin
        ShowWindow(MainForm.Handle,SW_SHOW);
        ShowWindow(MainForm.Handle,SW_RESTORE);
      end;
    end;
      

  2.   

    我用了控件可以在systray产生一个图标.并生成一个菜单,比如菜单中有个还原窗口大小的选项还原窗口大小我该怎么做????我用form1.activate,不行,,form1.show,也不行,,,how can i do ??多谢