我编了一个应用程序,由一个主程序和一个有托盘图标的子程序组成(两个都是EXE文件);当关闭主程序时,子程序也会被自动关闭,可是当程序关闭后托盘区剩下一个托盘图标不能自动清除,需要鼠标移到该图标后才能清除。请问如何解决(我在主程序用到的关闭子程序的函数是‘猛料’里找来的(killtask过程),子程序在独立运行时没有此现象)

解决方案 »

  1.   

    看看这个对你是不是有帮助
    procedure TForm1.FormClose(Sender: TObject; var Action: TCloseAction);
    var
      nid:TNotifyIconData;
    begin
      nid.cbSize := sizeof(nid); // nid变量的字节数
      nid.cbSize := sizeof(nid); // nid变量的字节数
      nid.uID:=1; //内部标识,与加入小图标时的数一致
      nid.Wnd := Handle; //主窗口句柄
      Shell_NotifyIcon(NIM_DELETE,@nid); //去掉小图标
      Shell_NotifyIcon(NIM_DELETE,@nid); //去掉小图标
    end;
      

  2.   

    Shell_NotifyIcon(NIM_Delete, @Nid);
      

  3.   

    Shell_NotifyIcon(NIM_Delete, @Nid);
      

  4.   

    窗体ondestroy里删除图标Shell_NotifyIcon(NIM_Delete, @Nid);
      

  5.   

    Shell_NotifyIcon(NIM_Delete, @Nid);
      

  6.   

    楼上的就可以解决你的问题:)
    建议你自己写个ttrayicon类,或者用别人的
      

  7.   

    我怎知道另外的程序的句柄,我的程序是由两个EXE文件组成