NT服务程序如何SHOW个FORM出来???顶贴有分!!

解决方案 »

  1.   

    看看这个对你有没有帮助  
    unit   Unit0;   
        
      interface     
        
      uses     
      Windows,   Messages,   SysUtils,   Classes,   Graphics,   Controls,   SvcMgr,   Dialogs;     
        
      type   
      TService1   =   class(TService)     
      procedure   ServiceStart(Sender:   TService;   var   Started:   Boolean);     
      procedure   ServiceExecute(Sender:   TService);     
      procedure   ServiceStop(Sender:   TService;   var   Stopped:   Boolean);   
      procedure   ServicePause(Sender:   TService;   var   Paused:   Boolean);     
      procedure   ServiceContinue(Sender:   TService;   var   Continued:   Boolean);     
      private     
      {   Private   declarations   }   
      fPaused   :   boolean;     
      public     
      function   GetServiceController:   TServiceController;   override;     
      {   Public   declarations   }   
      end;   
        
      var     
      Service1:   TService1;   
        
      implementation   
        
      uses   Unit2,   MainUnit,   UnitDMMain;   
        
      {$R   *.DFM}     
        
      procedure   ServiceController(CtrlCode:   DWord);   stdcall;   
      begin   
      Service1.Controller(CtrlCode);   
      end;     
        
      procedure   TService1.ServiceStop(Sender:   TService;   var   Stopped:   Boolean);   
      begin     
      //MainForm.Close;   
      Stopped   :=   false;   
      if   MainForm.CloseQuery   then   
      begin   
      ServiceThread.Terminate;   
      fPaused   :=   TRUE;   
      Stopped   :=   TRUE;   
      MainForm.Free;   
      end;   
      end;   
        
      procedure   TService1.ServicePause(Sender:   TService;   var   Paused:   Boolean);     
      begin     
      Paused   :=   True;   
      fPaused   :=   TRUE;   
      end;     
        
      procedure   TService1.ServiceContinue(Sender:   TService;   
      var   Continued:   Boolean);   
      begin     
      Continued   :=   True;   
      fPaused   :=   FALSE;   
      end;     
        
        
      function   TService1.GetServiceController:   TServiceController;   
      begin     
      Result   :=   ServiceController;   
      end;     
        
      procedure   TService1.ServiceStart(Sender:   TService;   var   Started:   Boolean);   
      begin     
      Started   :=   TRUE;   
      //DM_Main:=TDM_Main.Create(self);   
      MainForm:=TMainForm.Create(self);   
      //msgbox('dssdaf');   
      //MainForm.FormShow(MainForm);   
      MainForm.Show;   
      //MainForm.wmsyscommand();   
      end;   
        
      procedure   TService1.ServiceExecute(Sender:   TService);   
      begin   
      while   not   Terminated   do   begin   
      if   not   fPaused   then   begin   
      Sleep(0);   
      end;   
      ServiceThread.ProcessRequests(FALSE);   
      end;   
      end;   
      end.