var 
tray1,tray2: TNotifyIconData;
ico1,ico2:ticon;//托盘程序
ShowWindow(Application.Handle,SW_HIDE);
ico1:=ticon.Create;
ico2:=ticon.create;
imagelist1.GetIcon(0,ico1);
imagelist1.geticon(1,ico2);
tray1.cbSize:=sizeof(tray1);
tray1.Wnd:=Main.Handle;
tray1.uID:=0;
tray1.uFlags:=NIF_ICON or NIF_TIP or NIF_MESSAGE;
tray1.uCallbackMessage:=ghy_tray;
tray1.hIcon:=ico1.Handle;
tray1.szTip:='单击最小化';
Shell_NotifyIcon(NIM_ADD,@tray1);为何在程序关闭后任务栏的图标依然存在,鼠标在其上面移动后就可消失,请问如何使其在关闭程序后自动消失?解决后立即给分!

解决方案 »

  1.   

    在onclose事件中加上释放就好了
      

  2.   

    楼上的兄弟,tray1.free系统不识别,说是没有定义啊!
    还有别的方法吗?
      

  3.   

    这样当然不行了, 要NIM_DELETE嘛,
      

  4.   

    即然你都知道NIM_ADD了,就应该想到要NIM_DELETE了,
      

  5.   

    Shell_NotifyIcon(NIM_DELETE, @tray1);
      

  6.   

    procedure TMAIN.FormDestroy(Sender: TObject);
    begin
    Shell_NotifyIcon(NIM_DELETE, @tray1);
    Shell_NotifyIcon(NIM_DELETE, @tray2);
    end;
    end;
      

  7.   

    有加就要有减呵呵
    nim_add是加托盘nim_delete是减托盘