我的程序用了托盘技术.但是当关闭WINDOWS时,总是不能关闭我的程序.
能否判断windows给程序的关闭消息

解决方案 »

  1.   

    好像Windows关闭的时候会向各个应用程序发送关机消息然后,等待若干时候以后就关闭了,不论应用程序是否结束
      

  2.   

    我的程序也用了托盘技术.关闭WINDOWS时一切正常顺利,没出什么问题;不知楼主
    的是怎么回事~~~~
      

  3.   

    在Form中有两个事件: 一个OnClose, 一个OnCloseQuery,
    我记得Master Delphi3 中讲过, windows关闭时触发的事件和 点击×触发的事件不一样,如果没记错的话,前者触发OnCloseQuery,后者OnClose,所以在OnCloseQuery加入关闭试试。
      

  4.   

    你得在Onclose事件里将托盘移去啊。
    procedure TForm1.RemoveTrayIcon;
    var
      icon: NOTIFYICONDATA;
    begin
      icon.cbSize := sizeof(NOTIFYICONDATA);
      icon.uID    := 200;
      icon.Wnd    := Handle;
      Shell_NotifyIcon(NIM_DELETE, @icon);
    end;//此为移动托盘过程。
    在onclose里调用就好了: RemoveTrayIcon
      

  5.   

    如果你用了TNMHTTP控件,在XP与NT,2000关机有困难。我用DELPHI5遇到这个问题。
      

  6.   

    “当关闭WINDOWS时,总是不能关闭我的程序”,你的程序是在你关掉的那个Windows 下运行的吗?呵呵,没听说过!
      

  7.   

    你是不是用了fastnet中的控件,好像是delphi自己原码的bug
      

  8.   

    拦截windows关闭的消息
    用    
    procedure WMQueryEndsession(Var Msg:TMessage);Message WM_QueryEndSession;procedure Tclient.WMQueryEndsession(var Msg: TMessage);
    begin
      client.Close;
      Msg.Result := 1;
    end;
    捕获到该消息后退出你的程序