вот примитивный сервер пи запуске создает форму при остановки уничтожает
| Код | const WM_APPSTARTUP = WM_USER + 1; WM_APPSTOP = WM_USER + 2;
type TService1 = class(TService) procedure ServiceCreate(Sender: TObject); procedure ServiceExecute(Sender: TService); procedure ServicePause(Sender: TService; var Paused: Boolean); procedure ServiceShutdown(Sender: TService); procedure ServiceStop(Sender: TService; var Stopped: Boolean); procedure ServiceStart(Sender: TService; var Started: Boolean); procedure ServiceContinue(Sender: TService; var Continued: Boolean); private { Private declarations } public function GetServiceController: TServiceController; override; end;
var Service1: TService1;
implementation uses unit1;
{$R *.DFM}
procedure ServiceController(CtrlCode: DWord); stdcall; begin Service1.Controller(CtrlCode); end;
function TService1.GetServiceController: TServiceController; begin Result := ServiceController; end;
procedure TService1.ServiceContinue(Sender: TService; var Continued: Boolean); begin Continued := SendMessage(Form1.Handle,WM_APPSTARTUP,0,0) <> 0; end;
procedure TService1.ServiceCreate(Sender: TObject); begin if ParamStr(1) = '' then begin end; end;
procedure TService1.ServiceExecute(Sender: TService); begin while not Terminated do begin ServiceThread.ProcessRequests(True); end; end;
procedure TService1.ServicePause(Sender: TService; var Paused: Boolean); begin Paused := SendMessage(Form1.Handle,WM_APPSTOP,0,0) <> 0; end;
procedure TService1.ServiceShutdown(Sender: TService); var Stopped: boolean; begin ServiceStop(Sender,Stopped); end;
procedure TService1.ServiceStart(Sender: TService; var Started: Boolean); begin if not Assigned(Form1) then begin // Form1 := TForm1.Create(nil); // создадим форму end; Started := SendMessage(Form1.Handle,WM_APPSTARTUP,0,0) <> 0; end;
procedure TService1.ServiceStop(Sender: TService; var Stopped: Boolean); begin if Assigned(Form1) then begin Stopped := SendMessage(Form1.Handle,WM_APPSTOP,0,0) <> 0; FreeAndNil(Form1); end else Stopped := True; end;
|
|