我想在机器关闭、重起、注销时,先运行自己的程序,然后根据原来具体的要求,来响应关闭、重起或注销。那位大侠可给我个答案。

解决方案 »

  1.   

    此类问题要用windows消息拦截方法可以解决,当发生关闭,重起,注销的消息时,拦截并加入自己的处理方法。
      

  2.   

    //声明拦截WM_QueryEndSession消息的过程 
    procedure WMQueryEndSession(var Msg: TMessage);message WM_QueryEndSession; procedure TForm1.WMQueryEndSession(var Msg: TMessage); 
    begin 
    if CheckBox1.Checked then Msg.Result :=1 
    else Msg.Result :=0; 
    end; 
      

  3.   

    Form OnCloseQuery里面写你的代码
    begin
       //add your code here
       CanClose := False;
    end
      

  4.   

    用Delphi实现禁止用户关闭Window9X。在软件的安装或演示操作等过程中,如果关闭WIN9X会产生严重的后果, 
    就必须禁止用户关闭WIN9X,直到完成相应的操作,那么如何才能禁止用户 
    关闭WIN9X呢?其实很简单,当用户关闭WIN9X时, 系统会发送给各应用程序 
    一个消息wm_queryendsession, 告诉各应用程序要关机了,如果反馈回来的 
    消息值为0,那么WIN9X就不能关机。因此,截获wm_queryendsession,并反馈 
    回0,大功就告成了,下面是一个例子。 //声明拦截WM_QueryEndSession消息的过程 
    procedure WMQueryEndSession(var Msg: TMessage);message WM_QueryEndSession; procedure TForm1.WMQueryEndSession(var Msg: TMessage); 
    begin 
    if CheckBox1.Checked then Msg.Result :=1 
    else Msg.Result :=0; 
    end;