程序中用到了indy udp和tcp控件,只要程序没退出,就无法关闭windows。对queryendsession消息处理后,98下可正常关机,但2000/xp下无法正常关闭,要关两下,第一次只会关闭程序。why?
处理方法如下:定义:
procedure shutdown(var Message: TMessage); message WM_QUERYENDSESSION ;实现:
procedure shutdown(var Message: TMessage);
begin
message.result:=1;//如果返回0,表明不能关闭
application.terminate;//或其它退出代码
end;

解决方案 »

  1.   

    你在CLOSEQUERY事件中手动释放INDY控件看看。
      

  2.   

    //声明拦截WM_QueryEndSession消息的过程
        procedure WMQueryEndsession(Var Msg:TMessage);Message WM_QueryEndSession;procedure Tclient.WMQueryEndsession(var Msg: TMessage);
    begin
      Msg.Result := 1;
      close;  //将自己的程序关闭
    end;
      

  3.   

    不好意思,原来不是indy的问题,而是其他原因,感谢二位提供的方法和思路。